在这种情况下,字典可能会有所帮助,它是为脚本设计的,虽然它不允许您创建“动态”变量,但字典的项目是动态的,并且可以起到与“变量”类似的目的。
Dim Teams as Object
Set Teams = CreateObject("Scripting.Dictionary")
For i = 1 To x
Teams(i) = "some value"
Next
稍后,要查询值,只需调用以下项:
MsgBox Teams(i)
字典包含键/值对,并且键必须是唯一的。分配给现有的 key 将覆盖其值,例如:
Teams(3) = "Detroit"
Teams(3) = "Chicago"
Debug.Print Teams(3) '## This will print "Chicago"
如果您需要担心是否覆盖,您可以使用.Exist 方法检查是否存在。
If Not Teams.Exist(3) Then
Teams(3) = "blah"
Else:
'Teams(3) already exists, so maybe we do something different here
End If
您可以使用.Count 方法获取字典中的项目数。
MsgBox "There are " & Teams.Count & " Teams.", vbInfo
字典的键必须是整数或字符串,但值可以是任何数据类型(包括数组,甚至是Object 数据类型,如Collection、Worksheet、Application、嵌套字典等。 , 使用 Set 关键字),因此例如您可以在工作簿中输入工作表:
Dim ws as Worksheet, dict as Object
Set dict = CreateObject("Scripting.Dictionary")
For each ws in ActiveWorkbook.Worksheets
Set dict(ws.Name) = ws
Next