參考網址:https://blog.gtwang.org/programming/excel-vba-array/
動態陣列
一般的陣列在宣告時就必須決定好陣列的大小,但是有的時候我們無法事先預知程式所需要的陣列大小,要等到實際執行時才會知道需要多少空間,這時候就可以使用動態陣列的方式來儲存資料。
動態陣列(dynamic arrays)的特點就是可以動態改變陣列的大小,在空間不足時可以擴增,而空間太大時也可以縮減,以下是動態陣列的使用方式:
' 宣告動態陣列 Dim MyDynArr() As Integer ' 調整陣列大小 ReDim MyDynArr(3) MsgBox "LBound = " & LBound(MyDynArr) _ & ", Ubound = " & UBound(MyDynArr) MyDynArr(3) = 123
動態陣列的宣告方式就是在宣告陣列時不要指定索引範圍,然後在要使用陣列之前執行 ReDim
設定陣列的大小。
隨後如果需要改變動態陣列的大小,也是同樣呼叫 ReDim
並指定新的陣列大小,而在預設的狀況下使用 ReDim
改病陣列大小時,原本儲存於陣列中的資料會被刪除,如果想要保留舊資料,就要加上 Preserve
,如果舊資料不需要保留的話,就可以將 Preserve
省略,這樣執行速度會比較快。
' 調整陣列大小,保留陣列內部資料 ReDim Preserve MyDynArr(10) MsgBox "LBound = " & LBound(MyDynArr) _ & ", Ubound = " & UBound(MyDynArr) MyDynArr(7) = 456 MsgBox MyDynArr(3) MsgBox MyDynArr(7)
這裡的 LBound
與 UBound
是用來查詢陣列索引下限與上限的函數。
當動態陣列使用完畢之後,我們可以使用 Erase
將系統配置給動態陣列的記憶體收回:
Erase MyDynArr
Erase
若用於一般性的陣列,則會將陣列內的每個元素重新初始化。