共用方式為


ReDim 陳述式

用於 程式層級 ,以重新配置動態數位 變數的儲存空間。

語法

ReDim [ Preserve ] varname ( 下標 ) [ Astype ], [ varname ( ) [ Astype ]] . . 。

ReDim 語句語法包含下列部分:

部分 描述
保存 選用。 當您變更最後一個維度的大小時,用來保留現有數位中數據的關鍵詞
varname 此為必要動作。 變數的名稱;遵循標準變數命名慣例。
下標 此為必要動作。 陣列變數的維度;最多可以宣告 60 個多個維度。 下標自變數會使用下列語法:

[lowerTo] upper [ , [lowerTo] upper ] . . . .

若未在 下方明確陳述,則陣列的下限是由 OptionBase 語句所控制。 如果沒有 OptionBase 語句,則下限為零。
type 選用。 變數的數據類型 ;可能是目前不支援的 ByteBooleanIntegerLongCurrencySingleDoubleDecimal () 、 DateString (,適用於可變長度字符串) 、 固定長度 字元串 () 、 ObjectVariant使用者定義型別對象類型

針對所定義的每個變數使用個別的 As類型子句。 針對包含數位的 Variant,type 會描述陣列中每個元素的類型,但不會將 Variant 變更為其他類型。

註解

ReDim 語句可用來調整或調整已使用 PrivatePublicDim 語句正式宣告的動態數位大小,其具有空白括弧 (不含維度下標) 。

重複使用 ReDim 語句來變更數位中的項目和維度數目。 不過,除非數位包含在 Variant 中,否則您無法宣告一個數據類型的陣列,稍後再使用 ReDim 將陣列變更為另一個數據類型。 如果數位包含在 Variant 中,則可以使用 As類型子句來變更元素的類型,除非您使用 Preserve 關鍵詞,在此情況下,不允許變更數據類型。

如果您使用 Preserve 關鍵詞,則只能調整最後一個數位列維度的大小,而且完全無法變更維度的數目。 例如,如果您的陣列只有一個維度,您可以調整該維度的大小,因為它是最後一個且唯一的維度。 不過,如果您的陣列有兩個或多個維度,您可以只變更最後一個維度的大小,並且仍然保留數位的內容。

下列範例示範如何增加動態數位最後一個維度的大小,而不需要清除數位中包含的任何現有數據。

ReDim X(10, 10, 10) 
. . . 
ReDim Preserve X(10, 10, 15) 

同樣地,當您使用 Preserve 時,只能藉由變更上限來變更陣列的大小;變更下限會導致錯誤。

如果您讓陣列小於它,則排除元素中的數據將會遺失。

當變數初始化時,數值變數會初始化為0、變數長度字串會初始化為零長度字串 (“”) ,而固定長度字元串則會填入零。 Variant 變數會初始化為 空白。 用戶定義型別變數的每個項目都會初始化,就像是個別的變數一樣。

參考物件的變數必須先使用 Set 語句來指派現有的物件,才能使用它。 在指派物件之前,宣告的 物件變數 具有特殊值 Nothing,表示它不會參考物件的任何特定實例。

如果宣告的變數不存在於模組層級程式層級則 ReDim 語句會作為宣告語句。 如果稍後建立另一個具有相同名稱的變數,即使在較寬 的範圍中, ReDim 也會參考較新的變數,而且不一定會造成編譯錯誤,即使 Option Explicit 有效也一樣。 若要避免這類衝突, ReDim 不應作為宣告式語句,而只是用於轉譯數位。

注意事項

若要調整 Variant 中所含數位大小,您必須先明確宣告 Variant 變數,再嘗試調整其陣列的大小。

範例

此範例會使用 ReDim 語句來配置和重新配置動態數位變數的儲存空間。 它假設 選項基底1

Dim MyArray() As Integer ' Declare dynamic array. 
Redim MyArray(5) ' Allocate 5 elements. 
For I = 1 To 5 ' Loop 5 times. 
 MyArray(I) = I ' Initialize array. 
Next I 

下一個語句會調整陣列的大小,並清除元素。

Redim MyArray(10) ' Resize to 10 elements. 
For I = 1 To 10 ' Loop 10 times. 
 MyArray(I) = I ' Initialize array. 
Next I 

下列語句會調整陣列的大小,但不會清除元素。

Redim Preserve MyArray(15) ' Resize to 15 elements. 

另請參閱

支援和意見反應

有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應