Vba 是否可以使用array()创建二维数组?

Vba 是否可以使用array()创建二维数组?,vba,Vba,创建一维数组非常简单: Dim A As Variant A = Array(10,20,30) 可以用数组创建二维数组吗?还有其他方法吗?我知道我以前在某个地方见过这个,但我不得不搜索一点: Sub test() Dim A As Variant A = [{1,2,3;4,5,6;7,8,9}] Debug.Print A(2, 2) End Sub 我知道我以前在什么地方见过这个,但我不得不寻找一点: Sub test() Dim A As Variant A = [{1,2,3;4,

创建一维数组非常简单:

Dim A As Variant
A = Array(10,20,30)

可以用数组创建二维数组吗?还有其他方法吗?

我知道我以前在某个地方见过这个,但我不得不搜索一点:

Sub test()
Dim A As Variant
A = [{1,2,3;4,5,6;7,8,9}]
Debug.Print A(2, 2)
End Sub

我知道我以前在什么地方见过这个,但我不得不寻找一点:

Sub test()
Dim A As Variant
A = [{1,2,3;4,5,6;7,8,9}]
Debug.Print A(2, 2)
End Sub

我认为这是不可能的。使用数组函数,您只能指定值列表,而不能指定维度

数组函数语法

方阵英语

必需的arglist参数是一个逗号分隔的值列表,这些值分配给变量中包含的数组元素

你可以影响下限。使用选项Base 1,则数组函数返回具有下限1的数组。仅当数组函数使用类型库名称(例如VBA.Array)进行限定时,选项Base才不会影响数组函数返回的数组的下限

要创建二维阵列,只需指定尺寸,例如

Dim multiA(1 To 2, 1 To 2) As String
Dim multiA As Variant
ReDim multiA(1 To 2, 1 To 2)
或者像这样使用ReDim

Dim multiA(1 To 2, 1 To 2) As String
Dim multiA As Variant
ReDim multiA(1 To 2, 1 To 2)

我认为这是不可能的。使用数组函数,您只能指定值列表,而不能指定维度

数组函数语法

方阵英语

必需的arglist参数是一个逗号分隔的值列表,这些值分配给变量中包含的数组元素

你可以影响下限。使用选项Base 1,则数组函数返回具有下限1的数组。仅当数组函数使用类型库名称(例如VBA.Array)进行限定时,选项Base才不会影响数组函数返回的数组的下限

要创建二维阵列,只需指定尺寸,例如

Dim multiA(1 To 2, 1 To 2) As String
Dim multiA As Variant
ReDim multiA(1 To 2, 1 To 2)
或者像这样使用ReDim

Dim multiA(1 To 2, 1 To 2) As String
Dim multiA As Variant
ReDim multiA(1 To 2, 1 To 2)

可以使用数组函数语法创建数组数组:

  x = Array(Array(0, 1, 2, 3, 4), Array(100, 101), Array(200, 201, 202))
  debug.print x(2)(1)
  201

这实际上不是一个二维数组。此技术在其他语言中使用较多。

您可以使用数组函数语法创建数组:

  x = Array(Array(0, 1, 2, 3, 4), Array(100, 101), Array(200, 201, 202))
  debug.print x(2)(1)
  201

这实际上不是一个二维数组。这种技术在其他语言中使用得很多。

很好的解决方法。[…]需要一个工作表范围,但您提供了一个值数组。令人惊叹的请注意,此技术创建一个基于1的数组,而数组函数返回一个基于零的数组。另外,它在Excel中工作,但在Access中不工作。汤姆,我同意,我最喜欢你的答案。很好的解决方法。[…]需要一个工作表范围,但您提供了一个值数组。令人惊叹的请注意,此技术创建一个基于1的数组,而数组函数返回一个基于零的数组。另外,它在Excel中工作,但在Access中不工作。汤姆,我同意,我最喜欢你的答案。汤姆,这是最好的答案。我试着这么做,但在我的日常工作中没有提到,所以我没有记住它,但不知怎么搞砸了语法。汤姆,这是最好的答案。我试着这么做,但它在我的日常工作中没有出现,所以我没有记住它,但不知怎么搞砸了语法。