【Excelマクロ】VBAコンパイルエラー「修正候補:識別子」の原因と対処法

スポンサードリンク
VBA

この記事を読んでわかること

  • 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など、時間を生み出すプログラミング術を公開しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。

最後までお読みいただき、ありがとうございました。がんばってください!

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