如何在vba中手动声明二维数组

  • 本文关键字:声明 二维数组 vba excel vba
  • 更新时间 :
  • 英文 :


在python中,可以在列表中声明列表,例如l=[[1,0,0],[0,1,0],[0,0,1]]我如何做同样的事情,但在VBA excel

在VBA中声明数组与初始化其内容不同(与python不同(。

您将变量声明为具有的NM大小的2D数组

Dim a(1 to N, 1 to M) as Variant

但是这创建了固定大小的阵列,而不是动态阵列。最好声明一个数组如下

Dim a() as Variant
ReDim a(1 to N, 1 to M)

要用值填充数组,您需要一个双环,或者手动分配元素

a(1,1) = ...
a(1,2) = ...

注意,我声明的数组是基于1的,而不是基于0的(第一个元素是(1,1(,而不是(0,0((,因为当使用从Excel工作表中读取表时

a = Range("A2").Resize(N,M).Value
Debug.Print a(3,1)

它创建了这样一个数组。

注意,可以声明一个动态数组,并使用以下代码以锯齿状形式(数组数组(填充它

Dim a() as Variant
a = Array( Array(1,2,3), Array(4,5,6), Array(7,8,9) )

您可以使用以下表单在VBA中访问

Debug.Print a(2)(0)
' 7

请注意,Array()命令生成的数组是基于0的,索引在0..N-1之间变化。此外,由于上面是锯齿状数组(数组的数组(,因此使用顺序索引器访问元素,如a(i)(j)而不是a(i,j)

因此,这实际上取决于你想如何使用2D数组来决定如何最好地声明它

最新更新