如何在不选择单元格的情况下解析范围名称

时间:2019-04-24 12:09:12

标签: excel vba

在导入工作表时是否可以强制Excel使用VBA解析所有范围名称?在某些情况下,直到选择单个单元格(在编辑栏中突出显示然后取消选择)后,名称才会解析。 看起来,如果工作表包含名称管理器中不存在的任何名称,则所有后续名称都将被忽略。

我的应用程序正在“经理”工作簿中运行VBA代码,然后从那里打开第二个“模板”工作簿以生成测试报告。可以使用功能区控件将报告页面(工作表)附加到模板。这些附加的工作表具有各种单元格,这些单元格的名称可自动根据模板工作簿中已有的数据填写报告。 因此,例如,当导入worksheet(“ Results”)时,视图将显示:

Address     Formula       Value     Display
F18        =WeightAir     335        335
F19        =WeightWater   Name missing in this workbook
B39        =Length        1.1       #NAME?
C47        =Author        N H       #NAME?

如果我选择单元格C47,请单击编辑栏中的,然后再次退出,则正确显示该单元格的值。单元格B39仍然错误。 同一工作表中还有其他单元格没有填充,这只是为了显示一个示例。 我尝试使用VBA选择一定范围的单元格(包括所有显示#NAME?错误的单元格)来强制计算,但这似乎没有效果

DestWB.Worksheets(ShtCount).Range("A1", "Z65536").Select
DestWB.Worksheets(ShtCount).Calculate
DestWB.Worksheets(ShtCount).Range("A1").Select

我选择了一个建议,以便在关闭“源工作簿”之前应用该建议

DestWB.Worksheets(ShtCount).UsedRange.Formula = _
          OrigWB.Worksheets(1).UsedRange.Formula

但是,如果工作表中包含名称管理器中不存在的任何名称,则对于此工作簿,所有后续名称(即具有较高列,行地址的单元格)都将被忽略。 有没有一种方法可以强制所有已知名称进行解析,仅保留缺少的值? 有什么建议吗?

1 个答案:

答案 0 :(得分:0)

尽管我无法复制工作表的“副本” 所创建的问题,但由于能够在Formula中生成Error丢失Names

以下过程更新了{{1}中存在Formulas的{​​{1}}中的Error,仅将错误留给了不存在的Names

Workbook

enter image description here