【VBA】「コンパイルエラー」と「実行時エラー」の違いとは?初心者が自信を持てるエラー対処術

【業務効率化】VBA
スポンサーリンク

こんにちは!ぐーです。
いつもブログをご覧いただき、ありがとうございます!

今日は、VBAを勉強し始めたばかりの人が、きっと一度は頭を抱えたことがある「エラー」についてお話しします。

突然画面に現れる「コンパイルエラー」の警告や、実行を阻む黄色いハイライト。それらを目にすると、つい焦って心拍数が上がってしまいますよね。

しかし、これら2つの性質の違いを理解すれば、エラーは決して怖いものではなくなります。

むしろ「なるほど、あそこが原因かな」と冷静に対処する余裕が生まれるはずです。

【業務効率化】VBAの記事を見る

そもそも「2つのエラー」はどう違うの?

結論から言うと、これらは「どのタイミングで問題が発生したか」という違いに集約されます。

料理に例えるとわかりやすいので、イメージしてみてください。

  1. コンパイルエラー = レシピ(設計図)の書き間違い
    調理を開始する前(実行前)に、「この手順書では作れません」と差し戻される状態です。 例:「塩 大さじ1」とすべきところを「塩 〇〇」と書き、具体的な指示が欠落しているケースです。
  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の記事を見る


VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でも、年間100万円以上の節約・資産管理・スキルアップで新NISAで年間360万円投資し、iDeCoもフル活用しています。日商簿記3級持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、稼ぐ力を高めるITスキルについて発信しています。

生活を豊かにしたくて、高配当株投資で年間配当金60万円をめざしています。現在は年間配当金25万円以上達成!

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【業務効率化】VBAITスキル
スポンサーリンク
ぐーをフォローする

コメント

タイトルとURLをコピーしました