不是每個 陣列 都能重新維度。 此錯誤發生的原因與解決方案如下:
變 數 被默示為 變體,你嘗試用 ReDim 將其改成陣列。
變體可以包含陣列,但如果沒有明確宣告,你就不能用 ReDim 把它變成陣列。 在使用 ReDim 指定可包含元素數量前,先宣告 Variant。 例如,在以下程式碼中,會
ReDim AVar(10)造成無效 的 ReDim 錯誤,但ReDim BVar(10)不會:
AVar = 1 ' Implicit declaration of AVar.
ReDim AVar(10) ' Causes invalid ReDim error.
'.
'.
'.
Dim BVar ' Explicit declaration of BVar.
ReDim BVar(10) ' No error.
你嘗試用 ReDim 改變一個 變體中陣列的多個維度。 你只能用 ReDim 來改變 變體陣列最後一個維度的大小。 要建立一個具有多維度且可重新維度的陣列,該陣列不能包含在變 體中,必須用正常方式宣告。
ReDim 只用來改變一般陣列中元素的數量,而不是元素的類型。 如果你想要一個可以改變元素類型、可以改變的陣列,請使用包含在 Variant 中的陣列。 如果你先宣告陣列,可以更改類型及其元素數量,方法如下:
Dim MyVar As Variant ' Declare the variable.
ReDim MyVar(10) As String ' ReDim it as array of String subtypes.
ReDim MyVar(20) As Integer ' ReDim it as array of Integer subtypes.
ReDim MyVar(5) As Variant ' ReDim it as array of Variant subtypes.
你嘗試用 ReDim 搭配一個屬於自動化物件的陣列。
移除 ReDim。
便條 如果你沒有指定變數的型別,該變數會接收預設型別 Variant。 這並不總是明顯的。 例如,下列程式碼會宣告兩個變數,第一個
MyVar是 Variant,第二個AnotherVar是 Integer。
Dim MyVar, AnotherVar As Integer
如需詳細資訊,請選取有疑問的項目並按 F1 (在 Windows 中) 或 HELP (在 Macintosh 上)。
支援和意見反應
有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應。