首页 > 解决方案 > 引用单元格中列出的命名范围

问题描述

大家好,这里的编码都是全新的:

我正在尝试为我拥有的特定 Excel 工作表设置视图。该工作表有大约 300 列数据,浏览起来非常麻烦。我为每一列定义了一个命名范围,并创建了一些公式来确定特定视图上的命名范围列表,例如。“命名范围_1,命名范围_2”等。

我在VBA代码中输入了一些命名范围,但注意到大约 12 个左右的列表出现 1004 Range 引用错误。

如果我将代码分成 3 行并且它似乎可以工作。但是,我希望代码能够自动生成公式单元格(特定视图的命名范围列表)。

例如,另一个工作表中的公式化单元格当前显示为:“Namedrange_1, NamedRange_2, Etc”

Private Sub CMB_TAKEOFF_BASIC_Click()
    Application.ScreenUpdating = False

    Sheets("Pipe").Visible = True
    Worksheets("Pipe").Activate

    Call CMB_All_Click

    Columns("B:XFD").Select
    Selection.EntireColumn.Hidden = True

    Range("NamedRange_1,NamedRange_2).EntireColumn.Hidden = False
    Range("NamedRange_13,NamedRange_14).EntireColumn.Hidden = False

    ActiveWindow.ScrollColumn = 1

    Application.ScreenUpdating = True
End Sub

查找代码以从 Excel 工作表中的计算中引用命名范围列表,因此我不必在每次修改视图时手动更改代码。

标签: excelvba

解决方案


这是带有一些更正的完整代码。这很好用,我测试过。请试一试。

Private Sub CMB_TAKEOFF_BASIC_Click()
Dim i As Integer
Dim arr() As String
    Application.ScreenUpdating = False
    Worksheets("Pipe").Visible = True
    Worksheets("Pipe").Activate
    'Call CMB_All_Click
    Columns("B:XFD").EntireColumn.Hidden = True
'fill the array with values: split B20's value by commas.
    arr = Split(Worksheets("VIEWS").Range("B20"), ",")
'for each value (named range) hide its column.
    For i = 0 To UBound(arr)
        Range(arr(i)).EntireColumn.Hidden = False
    Next
    ActiveWindow.ScrollColumn = 1
    Application.ScreenUpdating = True
End Sub

推荐阅读