【问题标题】:Refresh named ranges when #NAME? in a worksheet that's being updated#NAME? 时刷新命名范围在正在更新的工作表中
【发布时间】:2015-10-09 16:37:13
【问题描述】:

我正在完成一个 .xls,它旨在通过宏更新另一个 .xls(一个工具)。所以基本上这个想法是单击一个按钮,选择您的目标文件(您将更新的文件),然后宏将通过复制、粘贴和替换公式以及添加工作表进行一些修改来修补文件。此补丁/更新文件仅包含将添加到目标文件中的单元格和工作表。

当我在其中包含引用仅存在于工具(目标文件)中但不存在于补丁 .xls 中的命名范围的公式时,我开始遇到一些麻烦。由于名称很多,我决定断开补丁文件中的所有连接,以便将公式复制到目标文件中而无需内部引用。我想避免这些引用卡在不适当的旧文件中的问题。

这些故意的链接损坏使补丁文件显示使用命名范围的公式出现错误“#NAME?”。我不在乎那里发生这种情况,但是当在目标文件中复制这些公式后仍然存在此错误时,我会这样做。在目标文件中存在这些名称。

我加入了这一行来刷新计算但没有用(相当于 Alt-Ctrl-Shift + F9)

wbTarget.Application.CalculateFullRebuild

正如您在 A3:A6 中看到的那样,我通过手动按 F2(编辑)和介绍使它们工作。此操作使用声明的名称恢复连接。这显然不是让所有单元都能正常工作的解决方案。

打印屏幕 这只是一个例子,但这发生在其他一些工作表中。 #¿名词?表示#NAME?

【问题讨论】:

  • 你能给我们cF2FAgency4的定义吗?
  • 如果您尝试wbTarget.Save 并确保在打开保存之前计算会发生什么?我注意到Calculate 方法不一定适用于公式繁重的工作簿。

标签: excel named-ranges vba


【解决方案1】:

尝试使用下面的代码重新输入整个工作表的公式:

Sub ReEnterFormulas()
    Dim Cell As Range
    For Each Cell In ActiveSheet.UsedRange.SpecialCells(xlCellTypeFormulas)
        Cell.Formula = Mid(Cell.Formula, 2)
    Next
End Sub

【讨论】:

  • 我不知道为什么我没有收到您的回答的任何警报,但无论如何谢谢。我不知道它是否有效我刚刚制作了一个宏,将“=”替换为“*=”,然后再次替换为“=”。它没有我想要的那么高效,但工作正常。
  • @Gerónimo 如果它有助于解决问题,请点击接受答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多