宣告動態陣列變數,並在程序層級配置或重新配置儲存空間。
語法
ReDim [Preserve] varname(subscripts) [, varname(subscripts)] . . .
引數:
Preserve:當您變更最後一個維度的大小時,保留現有陣列中的資料。
Varname:變數的名稱;遵循標準變數命名慣例。
Subscripts:陣列變數的維度。
備註
ReDim 陳述式可用來調整或重新調整動態陣列的大小,該陣列必須已使用 Private、Public 或 Dim 陳述式並搭配空括號 (不含維度下標) 來正式宣告。您可以重複使用 ReDim 陳述式來變更陣列中的元素和維度數。
如果您使用 Preserve 關鍵字,則只能調整最後一個陣列維度的大小,且完全無法變更維度數。例如,如果您的陣列只有一個維度,則可以調整該維度的大小,因為它是最後一個,也是唯一的維度。不過,如果您的陣列有兩個以上的維度,則只能變更最後一個維度的大小,且仍會保留陣列的內容。
下列範例顯示如何增加動態陣列最後一個維度的大小,而不清除陣列中包含的任何現有資料。
範例 1:基本 ReDim 用法 (無 Preserve)
Dim arr() ' Initially, create an array with 3 elements ReDim arr(2) ' Array can hold 3 elements (0, 1, 2) ' Assign values to the array arr(0) = "Apple" arr(1) = "Banana" arr(2) = "Cherry" ' Now, resize the array to hold 5 elements ReDim arr(4) ' Array can hold 5 elements (0, 1, 2, 3, 4) 'If you try to access indexes 0, 1, 2 there will be no values. ' The previous values are lost because we did not use Preserve arr(3) = "Date" arr(4) = "Elderberry"
範例 2:使用 ReDim Preserve 保留現有資料
Dim arr() ' Initially, create an array with 3 elements ReDim arr(2) ' Array can hold 3 elements (0, 1, 2) ' Assign values to the array arr(0) = "Apple" arr(1) = "Banana" arr(2) = "Cherry" ' Now, resize the array to hold 5 elements, keeping the existing data ReDim Preserve arr(4) ' Array can hold 5 elements (0, 1, 2, 3, 4) ' The previous values are preserved, so we can add more elements arr(3) = "Date" arr(4) = "Elderberry"
注意:如果您縮小陣列,則會遺失被排除元素中的資料。
初始化變數時,數值變數會初始化為 0,字串變數會初始化為長度為零的字串 ("")。您必須先使用 Set 陳述式將現有物件指派給參照物件的變數,才能使用該變數。在被指派物件之前,宣告的物件變數具有特殊值 Nothing。