共用方式為


無效的 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。 這並不總是明顯的。 例如,下列程式碼會宣告兩個變數,第一個 MyVarVariant,第二個 AnotherVarInteger

Dim MyVar, AnotherVar As Integer 

如需詳細資訊,請選取有疑問的項目並按 F1 (在 Windows 中) 或 HELP (在 Macintosh 上)。

支援和意見反應

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