【初心者向け】VBAでよくあるコンパイルエラーとその対処法

VBAを使っていると、「コンパイルエラー」という見慣れないダイアログに悩まされることがあります。
初めてエラーを見たときは「何が間違ってるの?」と戸惑ってしまうかもしれません。

この記事では、VBA初心者の方がよく遭遇するコンパイルエラーとその原因・解決方法を一覧で分かりやすく解説します。


🔰 そもそも「コンパイルエラー」とは?

コンパイルエラーとは、「プログラムとして成立しない記述がある」ことをVBAが実行前に教えてくれるエラーです。
例えるなら、誤字脱字だらけのレシピのようなもので、「このままだと料理できませんよ」と言われている状態です。

■ ポイント

  • 実行前に発生
  • コードの文法的な間違い

✔ よくあるコンパイルエラー一覧(早見表)

エラー内容 発生原因 解決方法
変数が定義されていません
Variable not defined
Option Explicit使用時に未宣言の変数を使った Dim 変数名 As 型 で宣言を追加する
構文エラー
Syntax error
コードの書き方が正しくない(例:If文にEnd Ifがない) 文法を見直し、閉じ忘れやカンマ忘れがないか確認
型が一致しません
Type mismatch
変数に合わない型の値を代入している 変数の型と代入値の型を見直す
引数が多すぎます/少なすぎます
Argument not optional
関数に必要な引数が不足、または余分な引数を渡している 関数の定義を確認し、正しい数の引数を渡す
オブジェクトが必要です
Object required
オブジェクトでない変数にドット(.)でプロパティを使った Setしているか、型がObjectか確認
定義済みの定数が再定義されています
Ambiguous name detected
同じ名前の定数や変数を複数定義している 名前を変更する/不要な定義を削除する
名前があいまいです
Ambiguous name detected
同じ名前のプロシージャや関数が複数存在 モジュールや関数名を見直す
プロシージャが見つかりません
Sub or Function not defined
存在しないプロシージャを呼び出している 名前のスペルミスや参照設定を確認
外部ライブラリが参照できません
Missing reference
参照設定していた外部ライブラリが無効化 [ツール] → [参照設定]でチェックを外すか再設定

■ コンパイルエラーの見つけ方とデバッグ方法

  • [デバッグ] → [プロジェクトのコンパイル] を実行
    → 一括でコード全体のエラーをチェックできます
  • F8キーで1行ずつ実行(ステップ実行)
    → どこで止まるか、どの行でエラーになるかが一目瞭然
  • エラーが出たら「OK」ではなく「ヘルプ」をクリック
    → エラーの詳細がMicrosoftドキュメントで確認できます

■ 初心者がやりがちな落とし穴

  • 変数名の打ち間違い(例:Counter と Countr)
  • 省略記法の誤用(例:Range("A1") = 10 はOKだが、Range = 10 はNG)
  • Option Explicit を書かない → 意図しない変数が作られる
  • モジュール名と同じ名前のプロシージャ → 「あいまいな名前」エラーの原因に

■ まとめ

コンパイルエラーは「初心者殺し」とも言えますが、逆に「ミスをすぐに気づかせてくれる優しい存在」でもあります。

焦らずエラーメッセージを読み解き、
どこが間違っているのか?
なぜそうなるのか?

を一つひとつ学んでいくことで、VBAスキルは確実に身についていきます。