Excel VBA -通过连接名称调用全局变量



我有这些

Public Const WS1 = "SheetNameA"
Public Const WS2 = "SheetNameB"
Public Const WS3 = "SheetNameC"
Public Const WS4 = "SheetNameD"
Public Const WS5 = "SheetNameE"
Public Const WS6 = "SheetNameF"

其中"工作表名称"a - 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

使用数组。第一次运行 MAIN () ,然后运行海洋():

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

我不知道VBA中的"间接"函数,您可以做的是定义一个公共数组并将值存储在那里,在这里您可以通过索引获得值。由于在VBA中不可能定义数组常量,您需要在使用之前初始化您的数组(例如在工作簿的加载事件中)。

相关内容

  • 没有找到相关文章

最新更新