
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スキルは確実に身についていきます。