無効な 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 つ目の
MyVar
は Variant になり、2 つ目のAnotherVar
は Integer になります。
Dim MyVar, AnotherVar As Integer
詳細については、該当する項目を選択し、F1 キー (Windows の場合) または HELP (Macintosh の場合) を押してください。
サポートとフィードバック
Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。