我有这些
Public Const WS1 = "SheetNameA"
Public Const WS2 = "SheetNameB"
Public Const WS3 = "SheetNameC"
Public Const WS4 = "SheetNameD"
Public Const WS5 = "SheetNameE"
Public Const WS6 = "SheetNameF"
SheetNameA-B-C是工作簿中工作表的名称。
我想使用For loop 1 to 6
这样一个接一个地激活工作表:
For i = 1 to 6
Workbooks([wbkname]).Sheets(WS & i).Activate
[some more code doing stuff]
Next i
现在我知道这不起作用,我只想解释我想要的东西。 那可能吗?通过连接名称调用公共常量(使公共常量字符串成为我们激活的工作表的名称)?
我希望这是有道理的。
编辑:第二个想法,也许我会做一个Select Case
,我知道这不是很漂亮,但我认为,对我的目的来说会很好。
For i = 1 to 6
Select Case i
Case 1
somevariable = [name of one sheet]
Case 2
somevariable = [name of another sheet]
....
End Select
Workbooks([wbkname]).Sheets(somevariable).Activate
答案 0 :(得分:0)
我不知道VBA中的“间接”功能,你可以做的是定义一个公共数组并在那里存储值,这里你可以通过索引获取值。由于无法在VBA中定义数组常量,因此需要在使用前初始化数组(例如,在工作簿的加载事件中)。
答案 1 :(得分:0)
只需使用数组。首先运行 MAIN(),然后运行 marine():
Public WS(1 To 6) As String
Sub MAIN()
WS(1) = "SheetNameA"
WS(2) = "SheetNameB"
WS(3) = "SheetNameC"
WS(4) = "SheetNameD"
WS(5) = "SheetNameE"
WS(6) = "SheetNameF"
End Sub
Sub marine()
For i = 1 To 6
Workbooks("Book1").Sheets(WS(i)).Activate
[some more code doing stuff]
Next i
End Sub