Visual Basic for Applicationsの「SubscriptOutofRange」エラーを修正するにはどうすればよいですか?



問題を排除するために楽器を試してください

Visual Basic for Applications(VBA)は、Microsoftによって開発されたVisualBasicプログラミング言語の実装です。 VBAは、UDFの有効化、タスクの自動化、およびDLLを介したWinAPIへのアクセスに使用できます。ただし、ごく最近、ユーザーが特定のコマンドを実行できないという報告が多数寄せられています。 添え字が範囲外、エラー9 」としようとするとポップアップします。



添え字が範囲外エラー



VBAで「添え字が範囲外」エラーの原因は何ですか?

複数のユーザーから多数の報告を受けた後、問題を調査し、完全に修正するための一連の解決策を考案することにしました。また、トリガーとなる理由を調査し、以下のようにリストアップしました。



  • 存在しない要素: 場合によっては、コマンド内の存在しない要素を参照している可能性があります。添え字が可能な添え字の範囲よりも大きいか小さいか、アプリケーションのこの時点で次元が配列に割り当てられていない可能性があります。
  • 未定義の要素: コード内の要素の数を特定しなかった可能性があります。配列内の要素の数は、「Dim」または「ReDim」コマンドを使用して定義することが重要です。
  • 不正なコレクションメンバー: 場合によっては、ユーザーが存在しないコレクションメンバーを参照している可能性があります。コレクションメンバーに対して誤った参照が行われると、このエラーがトリガーされる可能性があります。
  • 速記スクリプト: 省略形の添え字を使用していて、無効な要素が暗黙的に指定されている可能性があります。有効なキー名を使用することが重要です。

問題の性質についての基本的な理解ができたので、次に解決策に進みます。競合を避けるために、これらは提示された特定の順序で実装してください。

解決策1:配列をチェックする

Array要素に誤った値を定義した可能性があります。したがって、Array要素に定義した値を再確認し、それが正しい値であることを確認することをお勧めします。また、配列の宣言を確認し、 確認 上限と下限。アレイのサイズが変更されている場合は、必ず LBound そして UBound アクセスを条件付ける機能。インデックスが変数の場合は、変数名のスペルを確認してください。

VBAExcelの配列



解決策2:要素数の指定

場合によっては、エラーがトリガーされているために、コード内の要素の数を定義していない可能性があります。を使用して配列内の要素の数を指定することをお勧めします。 なし または ReDim 関数。

DimとReDimを使用して要素の数を指定する

解決策3:構成の変更

このエラーは通常、ユーザーが誤ったコレクションメンバーまたは存在しないコレクションメンバーを指定した場合にトリガーされます。したがって、インデックス要素を指定する代わりに、「 それぞれについて…次へ 」構成。

「ForEach…Next」コンストラクトの使用

解決策4:キー名とインデックスを確認する

場合によっては、添え字の省略形を使用していて、無効な要素が指定されている可能性があります。したがって、を使用することをお勧めします 有効なキー 名前 そして インデックス コレクションのために。

有効なキー名の使用

読んだ2分