如何在vba中为excel初始化多维数组变量

use*_*215 11 arrays excel vba excel-vba

微软网站显示下面的代码应该工作:

Dim numbers = {{1, 2}, {3, 4}, {5, 6}}

但是,当我尝试在excel VBA模块中使用它时,我收到了一个complile错误.以下适用于一维数组:

A = Array(1, 2, 3, 4, 5)

但是我还没有找到一种方法来为2D数组做同样的事情.有任何想法吗?

Rob*_*zie 21

您还可以使用利用该Evaluate函数和静态数组的速记格式.在下面的代码中,varData设置在哪里[]Evaluate函数的简写,{...}表达式表示静态数组.每行用a分隔,;每个字段用a分隔,.它会使您获得与simoco代码相同的最终结果,但语法更接近原始问题:

Sub ArrayShorthand()

    Dim varData As Variant
    Dim intCounter1 As Integer
    Dim intCounter2 As Integer

    ' set the array
    varData = [{1, 2, 3; 4, 5, 6; 7, 8, 9}]

    ' test
    For intCounter1 = 1 To UBound(varData, 1)
        For intCounter2 = 1 To UBound(varData, 2)
            Debug.Print varData(intCounter1, intCounter2)
        Next intCounter2
    Next intCounter1

End Sub
Run Code Online (Sandbox Code Playgroud)

  • @Robin `[...]` 是 `Evaluate` 方法的快捷方式,它是 Excel 的一部分,而不是 Access (2认同)

Dmi*_*liv 11

微软网站建议......

这个建议适用于VB.NET但不适用于VBA.

对于VBA,你是在正确的方向.你可以这样做:

Dim A as Variant
A = Array(Array(1, 2), Array(3, 4), Array(5, 6))
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这是创建一个 [锯齿状数组](/sf/ask/660492591/)(一维数组),而不是二维数组。 (4认同)