如何创builddynamicvariables名称VBA

我正在尝试在VBA中根据单元格中的值创builddynamic数量的variables。 基本上我最终想要的就是像Team1, Team2... to TeamX 。 任何帮助是极大的赞赏

 Dim i, x As Integer Set x = Range("J4").Value Dim Team(1 To x) As String Dim Manager(1 To x) As String Range("A3").Select For i = 1 To x Dim Team(i) As Integer 

在这种情况下,字典可能会有所帮助,它是为脚本devise的,虽然它不会让您创build“dynamic”variables,但字典的项目是dynamic的,可以用作“variables”类似的目的。

 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 

字典的键必须是整数或string,但是值可以是任何数据types(包括数组,甚至是Object数据types,如使用Set关键字的CollectionWorksheetApplication ,嵌套字典等),所以例如,可以在工作簿中说明工作表:

 Dim ws as Worksheet, dict as Object Set dict = CreateObject("Scripting.Dictionary") For each ws in ActiveWorkbook.Worksheets Set dict(ws.Name) = ws Next 

这会让你开始。 但在开始之前,我build议您在Youtube上观看这些WiseOwlTutorials教程:

  • select单元格(范围,单元格,活动单元格,结束,偏移)
  • 工作表,图表和表格
  • variables
  • 数组
    昏暗我,x作为整数
     x =范围(“J4”)。值
    昏暗的团队()作为整数
     Dim Manager()As String

     ReDim团队(1到x)整数
     ReDimpipe理器(1到x)作为string

    范围( “A3”)。select


    对于i = 1到x

        队(我)=我

    下一个