在 VBA 中是否可以有条件地为变量赋值?

在 VBA 中是否可以有条件地为变量赋值?

是否可以根据条件的结果为变量分配一个值?

例如:我有以下变量:

Public legal
Public orphans
Public transfer_share
Public internet
Public xborder

我想用从 a 返回的值来增加每个变量myFunction,但没有if语句或select case

我认为,如果我将变量视为对象,那么这是可能的。

我想要替换的示例:

Sub incrementVariable(myFunction as string)
If myfunction = "legal" then
    legal = legal + 2
ElseIf myFunction = "orphans" then
    orphans = orphans + 2
...
Else
    xborder = xborder + 2
End if
End Sub

答案1

您可以使用字典来存储变量及其值:

Option Explicit

Public myDict As Dictionary

Sub InitializeDict()
    Set myDict = New Dictionary

    With myDict
        .Add "legal", 0
        .Add "orphans", 0
        .Add "transfer_share", 0
        .Add "internet", 0
        .Add "xborder", 0
    End With

End Sub

Sub incrementVariable(myFunction As String)
    If myDict.Exists(myFunction) Then
        myDict(myFunction) = myDict(myFunction) + 2
    End If
End Sub

Sub test()
    InitializeDict
    Debug.Print myDict("internet")
    incrementVariable ("internet")
    Debug.Print myDict("internet")
End Sub

要使用字典对象,您需要在 VBA 编辑器的工具 - 引用中添加“Microsoft Scripting Runtime”。

相关内容