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

このエラーは、全く同じ名前のプロシージャが複数ある場合などに発生します。
下記のVBAコードを見てください。
Sub test1()
Debug.Print "こんにちは"
End Sun
Sub test1() ' 一行目と同じ名前なのでエラー
Debug.Print "こんばんは"
End Sun
「探しているのはコレじゃない…」と思った場合は、次項で見つかるかもしれません。
コードの1行目に「test1」という名前のプロシージャがありますが、
5行目にも同じ名前のプロシージャが存在しており、これがエラーの原因です。
VBAでは、同じ名前のプロシージャが複数存在することは許可されていません。
なぜなら、プロシージャは名前で管理されており、管理番号などが無いからです。
例えば上記コードの「test1」という名前のプロシージャを呼び出すよう指示した場合、どちらを呼び出せばいいのか、プログラムは判断できません。
プロシージャ名は重複しないようにしましょう。
同じクラスに「田中くん」が2人居た場合、「田中くん!」と呼んだだけではどちらのことかわかりませんよね。
「田中一郎くん!」や「学級委員の田中くん」など、唯一無二の呼び方をする必要があり、プロシージャも同じなのです。
【こんなときによく発生します】
「型が一致しません」など、プロシージャ内で発生したエラー箇所を修正したいのだけれど、書き換えるのがなんか不安だから、プロシージャごとコピーしておいて片方を修正したら発生した…というのが私の経験です。
プロシージャをコピーする場合は、プロシージャ名の最後に現在時刻の1710など番号を振るようにしましょう。
このエラーによく似たものがいくつかあります。
初心者によくあるものをまとめましたので、ぜひ見ていってください。
初心者によくあるコンパイルエラーと対処法
私が初心者だった頃によく発生させていたコンパイルエラーをまとめました。
環境によっては以下のエラーも「名前が適切ではありません」と表示される可能性があります。
ぜひ最後まで見ていってください。
構文エラー

このエラーは、変数名が不正だった場合などに発生します。
例えば、変数名に「for」や「if」などの予約語をつけた場合などです。

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

このエラーは、プロシージャ名や変数名が不正な場合などに発生します。

プロシージャ名や変数名は、数値から始まる名前をつけることができません。
ひとまず「test1」や「test2」などという名前に変更して再実行してみてください。
修正候補:ステートメントの最後

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

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

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

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

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

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