字典可能会在这种情况下帮助,它是为脚本设计的,虽然它w不要让你创建“动态”变量,字典的项目是动态的,并且可以用作“变量”的类似目的。
Dim Teams as Object
Set Teams = CreateObject("Scripting.Dictionary")
For i = 1 To x
Teams(i) = "some value"
Next
后来,查询值,只是在项目调用诸如:
MsgBox Teams(i)
字典包含键/值对,键必须是唯一的。分配到现有键将覆盖它的值,例如:
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
你正在考虑的[阵列(https://msdn.microsoft.com/en-us/library/wak0wfyt.aspx) – litelite
你熟悉字典吗? – jellz77
我对字典不熟悉;他们能帮助这种情况吗? – reggie86