【问题标题】:Weird Excel bug when deleting sheet with named ranges?删除具有命名范围的工作表时出现奇怪的 Excel 错误?
【发布时间】:2013-05-09 21:46:18
【问题描述】:

我有一个 excel 工作簿,其中包括 2 个工作表 wkshtA 和 wkshtB。它们都有本地命名范围(每个命名范围的范围只是父工作表)。 wksht B 中的某些单元格引用了 A 中的命名范围,但 A 中的单元格没有引用 B 中的命名范围。

我有一个宏,可以在同一个工作簿中创建每个工作表的副本。这很好用。

问题是当我删除工作表 A 时,我的名称管理器有一堆 #ref 错误,其中包含工作表 A 上的所有名称,但每个名称的范围已更改为“工作簿”。但是,只有在删除工作表 B 之前删除工作表 A 时才会发生这种情况。如果我以相反的顺序删除它们,A 中的所有命名范围都会随工作表一起删除。

另一个奇怪的事情是,如果我删除 A,然后删除所有 #ref 错误,然后删除 B,然后运行创建新副本的宏,然后再次删除 A,#ref 错误不会再次出现。

我很难过...有什么想法吗?谢谢。

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    原来问题在于我定义从 B 到 A 的引用的方式。例如,我在 A 中有一个范围,在 B 中有一个范围,两者都命名为“Premium”。我有一段代码说

    worksheets("B").range("Premium").formula = "='A'!Premium"
    

    这实际上工作得很好,但是当我删除工作表 A 时,命名范围没有删除。将公式定义更改为

    worksheets("B").range("Premium").formula = "='A'!" & worksheets("A").range("Premium").address
    

    成功了

    【讨论】:

    • 我遇到了同样的问题,我从您的回答中得出了我的解决方案。我在模块中创建了一个函数,该函数引用了我正在删除的工作表。该功能正在另一张纸上使用。在函数中强加错误处理,我的问题解决了。
    猜你喜欢
    • 2017-06-28
    • 1970-01-01
    • 2016-12-22
    • 1970-01-01
    • 1970-01-01
    • 2016-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多