共用方式為


無效的 ReDim

不是每個 陣列 都能重新維度。 此錯誤發生的原因與解決方案如下:

  • 被默示為 變體,你嘗試用 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。 這並不總是明顯的。 例如,下列程式碼會宣告兩個變數,第一個 MyVarVariant,第二個 AnotherVarInteger

Dim MyVar, AnotherVar As Integer 

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

支援和意見反應

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