您好,所有在这里编码的人都是新手:
我正在尝试为我拥有的特定excel工作表设置视图。该工作表包含大约300列数据,这些数据非常难以浏览。我为每列定义了一个命名范围,并创建了一些公式来确定特定视图上的命名范围列表。 “ namedrange_1,命名为range_2”等
我已经在VBA
代码中输入了一些命名范围,但是发现大约12个清单中出现了1004 Range引用错误。
如果我将代码分成三行,它似乎可以工作。但是,我希望代码可以自动执行到所公式化的单元格(为特定视图列出命名范围)。
例如,另一个工作表中的公式化单元格当前显示为:“ Namedrange_1,NamedRange_2等”
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工作表中查找代码以引用命名范围列表,因此我不必在每次修改视图时都手动更改代码。
答案 0 :(得分:0)
这是带有某些更正的完整代码。我测试过,效果很好。请试一试。
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