無效的 ReDim
並非每個 陣列 都可以進行轉散發。 此錯誤發生的原因與解決方案如下:
變數已隱含宣告為Variant,而您嘗試使用ReDim將其變更為陣列。
Variant可以包含陣列,但如果未明確宣告,您就無法使用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 來變更 Variant中所包含陣列的多個維度。 您只能使用 ReDim 來變更 Variant中陣列最後一個維度的大小。 若要建立具有多個可轉譯維度的陣列,陣列不能包含在 Variant中,而且您必須以正常方式宣告它。
只使用 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 與屬於 Automation 物件成員的陣列搭配使用。
移除 ReDim。
注意 如果您未指定變數的類型,變數會收到預設類型 Variant。 這並不總是明顯的。 例如,下列程式碼會宣告兩個變數,第一個
MyVar
是 Variant,第二個AnotherVar
是 Integer。
Dim MyVar, AnotherVar As Integer
如需詳細資訊,請選取有疑問的項目並按 F1 (在 Windows 中) 或 HELP (在 Macintosh 上)。
支援和意見反應
有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應。