是否可以根据条件的结果为变量分配一个值?
例如:我有以下变量:
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”。