【问题标题】:How to create dynamic variable names VBA如何创建动态变量名 VBA
【发布时间】:2017-07-31 11:14:57
【问题描述】:

我正在尝试根据单元格中的值在 VBA 中创建动态数量的变量。 基本上我想最终得到的是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

【问题讨论】:

标签: vba excel


【解决方案1】:

在这种情况下,字典可能会有所帮助,它是为脚本设计的,虽然它不允许您创建“动态”变量,但字典的项目是动态的,并且可以起到与“变量”类似的目的。

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 数据类型,如CollectionWorksheetApplication、嵌套字典等。 , 使用 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

【讨论】:

    【解决方案2】:

    这将使您入门。但在开始之前,我建议您在 Youtube 上观看这些 WiseOwlTutorials 教程:

    Dim i, x As Integer x = 范围(“J4”). 值 Dim Team() 作为整数 Dim Manager() 作为字符串 ReDim Team(1 To x) As Integer ReDim 管理器(1 到 x)作为字符串 范围(“A3”)。选择 对于 i = 1 到 x 团队(i) = i 下一个

    【讨论】:

      猜你喜欢
      • 2021-12-31
      • 2021-10-26
      • 2011-10-27
      • 2022-01-16
      • 2014-09-02
      • 2018-05-01
      • 2015-10-16
      相关资源
      最近更新 更多