对此的二维答案如下。有很多方法可以做到这一点,这只是一个例子。二维数组虽然很好,但需要对实现进行一些思考,理想情况下,您希望使用某种形式的递归来填充它,下面的示例简单地以静态方式设置它们。
Public Sub Sample()
Dim AryTable() As String
Dim LngRow As Long
Dim LngCol As Long
'Below is a two dimensional array, think of it as a
'table with 3 rows and 5 columns (the base is zero
'so it is not 2 rows and 4 columns as it may look)
ReDim AryTable(2, 4)
'We can then populate (or not) each 'cell' of the array
'Row 1
AryTable(0, 0) = "1"
AryTable(0, 1) = "Field1"
AryTable(0, 2) = "Field2"
AryTable(0, 3) = "Field3"
'Row 2
AryTable(1, 0) = "2"
AryTable(1, 1) = "Field1"
AryTable(1, 2) = "Field2"
AryTable(1, 3) = "Field3"
AryTable(1, 4) = "Field4"
'Row 3
AryTable(2, 0) = "3"
AryTable(2, 1) = "Field1"
AryTable(2, 2) = "Field2"
AryTable(2, 4) = "Field4"
'Ubound by the first dimension to go through the rows
For LngRow = 0 To UBound(AryTable, 1)
'Ubound by the second dimension to go through the columns
For LngCol = 0 To UBound(AryTable, 2)
Debug.Print AryTable(LngRow, 0) & ": " & AryTable(LngRow, LngCol)
Next
Next
End Sub
需要注意的是,如果您在开始时未声明数组的大小,以后可以更改它。
该声明(以及以后不能更改): -
Dim AryTable(1,2) as string
这不是声明(及以后可以更改): -
Dim AryTable() as string
当哟尚未宣布大小(所以可以改变它),你必须在使用前调整它的大小。有两种方法可以做到,重置或保存。
这将清除数组并将其设置为新的大小,即,即。如果数组之前的大小为100,并且有数据存在,则下面的数据将删除所有数据,但将数据扩大。
Redim AryTable(200)
如果阵列中尺寸以前100有数据它,下面将保留所有数据,并使其更大
Redim Preserve AryTable(200)
在二维数组,你只能调整第二尺寸。以下是确定: -
Redim AryTable(2,4)
Redim Preserve AryTable(2,8)
以下将失败: -
Redim AryTable(2,4)
Redim Preserve AryTable(4,8)
考虑到这一点,如果你想用一个二维数组存储就像一个表中的数据,使用第一个维度为列,第二个为行,列计数很少变化,但可以添加行。
@加里埃文斯答案会做的工作,很容易理解。我会那样。无论如何,对于一个通用的解决方案(虽然很模糊,恐怕)看看[this](http://stackoverflow.com/a/37777993/1726522)。我已经使用它,它被证明是强大的。 – CMArg