【Excelマクロ】VBAコンパイルエラー「名前が適切ではありません」の原因と対処法

スポンサードリンク
VBA

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

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

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

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