次の方法で共有


無効な 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 の使用を試みました。

    ReDim を削除します。

    メモ 変数に型を指定しない場合、変数は既定の型 Variant を受け取ります。 これは常に明確とは限りません。 たとえば、次のコードでは 2 つの変数が宣言されていますが、1 つ目の MyVarVariant になり、2 つ目の AnotherVarInteger になります。

Dim MyVar, AnotherVar As Integer 

詳細については、該当する項目を選択し、F1 キー (Windows の場合) または HELP (Macintosh の場合) を押してください。

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。