こんにちは!ぐーです。
いつもブログをご覧いただき、ありがとうございます!
今日は、VBAを勉強し始めたばかりの人が、きっと一度は頭を抱えたことがある「エラー」についてお話しします。
突然画面に現れる「コンパイルエラー」の警告や、実行を阻む黄色いハイライト。それらを目にすると、つい焦って心拍数が上がってしまいますよね。
しかし、これら2つの性質の違いを理解すれば、エラーは決して怖いものではなくなります。
むしろ「なるほど、あそこが原因かな」と冷静に対処する余裕が生まれるはずです。
そもそも「2つのエラー」はどう違うの?
結論から言うと、これらは「どのタイミングで問題が発生したか」という違いに集約されます。
料理に例えるとわかりやすいので、イメージしてみてください。
- コンパイルエラー = レシピ(設計図)の書き間違い
調理を開始する前(実行前)に、「この手順書では作れません」と差し戻される状態です。 例:「塩 大さじ1」とすべきところを「塩 〇〇」と書き、具体的な指示が欠落しているケースです。
- 実行時エラー = 調理中に発生する予期せぬトラブル
レシピに不備はないものの、調理の過程で予期せぬ問題が起き、作業が中断してしまう状態です。 例:「卵を割る」手順で冷蔵庫を開けたら、中身が空だった!という、現場で初めて発覚するトラブルです。
1. コンパイルエラー:実行前に見つかる文法ミス
これは、VBAのルール(文法)を守れていない時に出ます。
プログラムを実行しようとした瞬間に、Excelが「ここ言葉の意味がわからないから動かせない」と教えてくれている感じです。
よくある原因:
- End If や Next などの閉じ忘れ
- スペルミス(Range を Rnage と書いてしまった、など)
コピペで確認!コンパイルエラーの例
以下のコードを標準モジュールに貼り付けて実行しようとすると、即座にエラーが通知されます。
Sub TestCompileError()
' Ifがあるのに、終わりの End If がない!
If Range("A1").Value = 1 Then
MsgBox "A1は1です"
' ここに End If が必要
End Sub
対処法:
落ち着いて、赤字で示された行や、メッセージが指している箇所の「綴り(スペル)」や「構文のペア(IfとEnd Ifなど)」を再確認しましょう。
2. 実行時エラー:動いてから発覚する「想定外」
こちらは、コードの書き方自体は正しいものの、実際のデータやPC環境と噛み合わずに発生するパターンです。
よくある原因:
- 「0」で割り算をした(数学的な不可)
- 指定した名前のシートやファイルが存在しない
- 数値が入るべき場所に、文字データが入っていた
コピペで確認!実行時エラーの例
文法は完璧ですが、実行時の状況(セルの状態)によってエラーが発生します。
Sub TestRuntimeError()
Dim result As Double
' A1に100が入っていて、A2が空欄(0扱い)だとエラー!
' 0で割り算はできません(実行時エラー 11)
Range("A1").Value = 100
Range("A2").ClearContents 'わざと空にする
result = Range("A1").Value / Range("A2").Value
MsgBox "結果は " & result
End Sub
対処法:
「デバッグ」ボタンを押し、黄色くハイライトされた行を確認します。「その行で何が起きているか(例:変数の値が空になっていないか)」を検証するのが解決への近道です。
まとめ:エラーは成長のチャンス
- コンパイルエラー:動かす前。「書き方が違うよ!」
- 実行時エラー:動いている途中。「状況がおかしいよ!」
この違いがわかれば、エラーが出ても「どっちのタイプかな?」と考える余裕が生まれます。
エラーが出ても焦らず冷静に対処していきましょう!
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

コメント