
熟練した開発者でさえ、VBAコードにうっかりエラーを組み込んでしまうことがあります。多くの人が、他のエラーよりも頻繁に目にするエラーはいくつかあります。これらのエラーの意味を知っておくと、素早く修正するのに役立ちます。このチュートリアルでは、VBAで最もよくある4つのエラーを紹介します。それぞれの意味と修正方法を学びましょう。
参照:誰もが知っておくべき Windows、Linux、Mac のコマンド (無料 PDF) (TechRepublic)
Windows 10 64ビットシステムでMicrosoft 365を使用していますが、これらのエラーのほとんどはほぼどのバージョンでも発生する可能性があります。どのWebアプリもVBAをサポートしていません。
Microsoft 365 アプリの VBA エラーの種類を見分ける方法
VBAコードをテストする際には、実行時エラー、構文エラー、コンパイルエラーの3種類のエラーが発生します。VBAのランタイムエラーは実行時に発生し、以下のようなエラーが含まれます。
- 無効な参照: コードには存在しない変数またはオブジェクトへの参照が含まれています。
- 無効なデータ: コードが存在しないデータを参照しようとしています。
- 0 による除算: コードはゼロによる除算を試行します。
これらのエラーは、コードを修正するか、コードをそのまま実行してエラー処理を使用して対処することで処理できます。
VBA 構文エラーは、スペルミス、タイプミス、ステートメント自体の間違い(必要な引数がすべて含まれていないなど)によって発生します。
VBA コンパイルエラーは、VBA がコードをコンパイルできない場合に発生します。コンパイルとは、ソースコードを目に見えない実行可能な命令に変換することです。
それでは、VBA の最も一般的なエラーを見てみましょう。
VBAのエラー13を修正する方法
おそらく最も一般的なエラーは、実行時エラー13: 型の不一致です。このエラーは、コードが変数または引数のデータ型と一致しない値を代入しようとしたときに発生します。
例えば、変数を整数として宣言し、その変数にテキスト文字列を渡そうとしたとします。この場合、VBAは図Aに示すような不一致エラーを返します。「デバッグ」をクリックすると、図Bに示すように、エラーが発生している行が強調表示されます。
図A

図B

この実行時エラーの修正は、この簡単な例のように、多くの場合簡単です。開発者は変数名 i を Integer データ型を表すために使用することが多いため、このエラーは明白です。一方、ほとんどのプロパティは特定のデータ型を返します。変数がそのプロパティのデータ型と一致しない場合、この行はエラーを返します。
間違いがすぐに見つからない場合は、変数を Variant として宣言してみてください。これがうまくいけば、もう少し調査すれば、プロパティに必要な正確なデータ型を特定するのに役立ちます。
VBAの構文エラーを修正する方法
VBAは通常、入力時にタイプミスやスペルミスを検出するので、簡単に修正できます。一方で、見つけにくいものもありますが、VBAはそれを補おうとします。
図Cはコンパイルエラーを示しています。これは基本的な構文ミスです。変数iを宣言し忘れていたため、VBAはその変数をハイライト表示し、エラーを表示します。VBAが実際にエラーのある変数をハイライト表示すれば、ミスがどこにあるか簡単に分かります。
図C

解決策は、宣言ステートメントを追加することです。
Dim i As Integer
コードを実行するには、構文エラーを修正する必要があります。経験を積めば、簡単に見つけられるようになります。VBAは、コードをコンパイルする際に、このような構文エラーを検出します。
VBAの一般的なコンパイルエラーを修正する方法
コンパイルエラーは、コードが実際に実行される前に発生します。これは、コードを呼び出してからVBAが実行を試みるまでのナノ秒単位で発生します。VBAがコードをコンパイルできない場合は、図Dのようなメッセージが表示されます。
図D

個々の行自体には問題はありませんが、VBAはIf文が不完全なため、それを補完できません。If文ではThenキーワードの後に何かが必要です。つまり、条件が満たされた場合、コードはどのような処理を実行するのでしょうか?その情報がそこにありません。
コードを実行する前にコンパイル エラーを修正する必要があります。
VBAでランタイムエラー9を修正する方法
このエラーは通常、コンテキスト内に存在しない値を要求した場合に発生します。例えば、5つの値を持つ配列を操作していて、6番目の値を要求したとします。その値は存在しないため、VBAは図Eに示すようにこのエラーを実行します。
図E

エラーの説明は分かりやすく、デバッグをクリックするとVBAはエラーのある行を選択します。配列に存在しない値を要求していることがすぐに分かります。そこからエラーを見つけるのは通常簡単です。
エラーの種類は他にもたくさんありますが、これら4つはほとんどの人が遭遇する最も一般的なエラーです。これらのエラーの原因がわかれば、簡単に解決できるはずです。