首页 > 解决方案 > 如何在不选择单元格的情况下解析范围名称

问题描述

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

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

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

但是,如果工作表包含名称管理器中不存在的任何名称,则对于此工作簿,所有后续(即具有更高列、行地址的单元格)名称都将被忽略。有没有办法强制解析所有已知名称,只留下缺失值?请问有什么建议吗?

标签: excelvba

解决方案


虽然我无法复制由工作表的“副本”创建的问题,但我能够生成Formulas in Errordue to missing Names

以下过程更新了中Formulas存在的,只将错误留给不存在的。ErrorNamesWorkbookName

Sub Formulas_InError_Refresh()
Dim wb As Workbook
Dim rErr As Range
Dim rArea As Range
    Set wb = ActiveWorkbook 'Change to the required workbook
    Set rErr = wb.Worksheets("Results").UsedRange.SpecialCells(xlCellTypeFormulas, xlErrors)
    For Each rArea In rErr.Areas
        With rArea
            .Formula = .Formula
    End With: Next
    End Sub

在此处输入图像描述


推荐阅读