この記事を読んでわかること
- VBAのコンパイルエラー「修正候補:識別子」が発生した原因と対処法がわかる
- 初心者によくあるコンパイルエラーを知れる
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
-著者情報-
名前:Utatane
VBA(マクロ)歴:3年
Excel使用歴:15年以上
ひとこと:初心者だった当時に戻った気持ちになって解説いたします
VBAコンパイルエラー「修正候補:識別子」とは?

このコンパイルエラー「修正候補:識別子」は、VBAの関数名や変数名、プロシージャ名が不正な場合などに発生します。
「識別子」とは、
複数の対象から、ある特定の対象を一意的に区別するために用いられる名称・符号・文字列・数値を指します。
簡単にいうと、関数や変数の名前のことだと思ってください。
身近なところでは、人の名前(山田くん)や物の名前(時計)といったところでしょうか…。
要は、「関数名や変数名がルールに違反しているから、変更してください」と言ってきているエラーです。
では、具体的な原因と対処法を見ていきましょう。
VBAコンパイルエラー「修正候補:識別子」の原因と対処法
まずは下記のVBAコードを見てください。
Sub 1test()
End Sub
これだけでエラーが発生します。
原因はプロシージャ名で、「1test」のように「数字から始まるプロシージャ名はNG」です。
変数名や関数名でも同じです。
Sub test()
Dim 1nensei As Integer
End Sub
【変数名など、識別子のルール】
- 数字や記号から始まる名前はNG(「test1」はOK)
- ifやforなどの予約語と同じ名前はNG(「if1」や「for_01」はOK)
対処法ですが、変数や関数など「何かに名前をつける場合は、アルファベットから始まって、最後を数字にする」という方法が無難です(「test1」、「for1」など)
これでほぼほぼエラーを回避できます。
呼び出したり操作する際は、最後の数字を付け忘れないようにしましょう。
極端な話、VBAの識別子は、漢字やひらがなも使えますので、「テスト」や「仮」などでも有効です。
エラーに困ったら検討してみてください。
初心者によくあるコンパイルエラー
私が初心者だった頃によく発生させていたコンパイルエラーをまとめました。
構文エラー

このエラーは、前項と同じで「変数名が不正だった場合」などに発生します。
環境によっては「修正候補:識別子」ではなく、下図のように「構文エラー」と表示される場合があります。

ひとまず変数名を「test1」などに変えて再実行してみてください。
それでも解決しない場合は、その行の構文に誤りがある可能性があります。
構文を再度見直してみましょう。
修正候補:ステートメントの最後

このエラーは、プロシージャ名にスペースが入っている場合などに発生します。

スペースを削除するか、ひとまず「test1」などの名前で再実行してみてください。
他にもプロシージャ内の構文で「=(イコール)」が抜けていたり、「.(ドット)」が抜けている場合にも発生します。
構文を見直してみましょう。
修正候補:式

このエラーは、条件式に誤りがある場合などに発生します。

例えば上図のようにイコールが2つ重なった場合などです。
該当箇所の条件式を再度見直してみましょう。
同じ適用範囲内で宣言が重複しています

このエラーは、同じ名前の変数が2回以上宣言されている場合などに発生します。

該当箇所の変数名を変えて再実行してみましょう。
最後に
VBA(Excelマクロ)のコンパイルエラー「修正候補:識別子」について解説いたしました。
当ブログでは、VBAマクロやPythonなど、時間を生み出すプログラミング術を公開しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
最後までお読みいただき、ありがとうございました。がんばってください!