【问题标题】:Naming an array using a variable使用变量命名数组
【发布时间】:2015-03-15 15:45:59
【问题描述】:

是否可以使用不同的变量来命名数组变量?例如,如果我将变量“i”定义为一个整数,其值等于我使用的列数:

Sub varNameTest

    Dim i, j, As Integer
    i = ActiveSheet.UsedRange.Columns.Count
    ...

是否可以通过 i 建立“i”个名为 myArray1 的数组?可能是这样的:

For j = 1 to i
    Dim (myArray & j())
Next i

虽然上面这个例子的语法不正确,但我只是想说明我正在尝试做什么。

编辑:为了更清楚,使用上面的示例,假设我在工作簿中有 4 张工作表。变量 i 将是 4,我将有一些代码生成 myArray1()、myArray2()、myArray3() 和 myArray4()。

【问题讨论】:

  • AFAIK,我不这么认为。您可以做的是创建一个数组,而不是在运行时创建变量。
  • 您的编辑并没有真正阐明问题。它可能有助于解释你想用这些“命名”数组做什么。

标签: arrays vba loops excel excel-2010


【解决方案1】:

是的。

Dim i(5) As Integer

在 VBA 中,您可以访问从 i(0)i(5) 的元素。


根据您编辑的问题,答案是否定的。您必须在代码中明确定义每个变量。

另一种选择是编写代码来编写您的代码 - 一种代码生成形式。实际上,这可以让您通过重复代码“模板”来编写非常长且复杂的代码。但我认为这对你的情况没有帮助。

【讨论】:

    【解决方案2】:

    您可以创建一个数组数组(尽管您的问题有点不清楚..)

    Sub MyArrays()
    
    Dim arrays()
    Dim arr
    Dim i, j
    
        i = 5 'e.g.
        ReDim arrays(1 To i)
    
        For j = 1 To i
            arr = Array()
            ReDim arr(1 To j)
            arrays(j) = arr
        Next j
        'reference an array by its position in "arrays"
        Debug.Print UBound(arrays(3))
    
    End Sub
    

    【讨论】:

    • 您的编辑并没有真正说明为什么创建命名变量很重要:通常这不是必需的(除了在 VBA 中实际上不可能)并且有更好的方法来实现相同的目的。跨度>
    猜你喜欢
    • 2021-06-22
    • 1970-01-01
    • 2020-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-28
    • 1970-01-01
    相关资源
    最近更新 更多