在python中,可以在列表中声明列表,例如l=[[1,0,0],[0,1,0],[0,0,1]]我如何做同样的事情,但在VBA excel
在VBA中声明数组与初始化其内容不同(与python不同(。
您将变量声明为具有的N
、M
大小的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数组来决定如何最好地声明它