對此的二維答案如下。有很多方法可以做到這一點,這只是一個例子。二維數組雖然很好,但需要對實現進行一些思考,理想情況下,您希望使用某種形式的遞歸來填充它,下面的示例簡單地以靜態方式設置它們。
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