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

この「修正候補:ステートメントの最後」というエラーは、VBAコードの文法に誤りがある場合に発生します。
「ステートメントの最後」と言われると、「は?何のこと?」と思うかもしれませんが、
単純に「コードに誤りがある」と解釈した方がわかりやすいかと思います。
では、どこに誤りがあるのか、主な原因を見ていきましょう。
プロシージャ名に誤りがある
下記のVBAコードを見てください。
Sub test 1()
End Sub
実はこれだけでエラーが発生します。
原因はプロシージャ名(「Sub 」の後ろ)です。
Sub test 1()
プロシージャ名にスペースやイコールなど、使えない文字が入っているとエラーが発生します。

分かりやすいプロシージャ名にするのは基本ですが、記号やスペースは使わないようにしましょう。
本文のイコールやドットなどが抜けている
コード本文でも「修正候補:ステートメントの最後」というエラーが発生する場合があります。
下記のVBAコードを見てください。
Sub test()
a1 = Range("A1")Value
End Sub

変数である「a1」にA1セルの値を代入しようとしたところですが、
「Value」の前の「.(ドット)」が抜けています。
正しくは下記のコードです。
Sub test()
a1 = Range("A1").Value
End Sub
このように、ドットやイコールなどが抜けてしまっていた場合でも、「修正候補:ステートメントの最後」というエラーが発生します。
コード内に文字の抜けがないかなど、よく確認しましょう。
原因と特定するコツ
コンパイルエラーは原因が特定しづらいエラーの1つですが、コツをお教えします。
まず、エラーが発生したら、エラー画面の「OK」ボタンをクリックしましょう。

すると、原因と思われる箇所が青くなります。

この青い部分の前に何か抜けが無いか、孤立していないかなど、その行のコードをよく見直してみてください。
プログラミングの知識が身についてくるようになれば、コンパイルエラーは減っていきます。
腐らずがんばりましょう。
エラーを繰り返さないために
このエラーを繰り返さないためには、VBAの知識を身に付けるしかありません。
VBAには、プロパティやメソッドの前には「.(ドット)」が必要など、ある程度決まった法則があります。
この法則を理解し、身に付けることがエラー回避の近道です。
そのために、いろんなエラーを出すことも時には必要です。
矛盾していると思われるかもしれませんが、失敗から学ぶことも非常に多いです。
プログラミングにエラーはつきものなので、そこから法則を学び、同じエラーを繰り返さないようにしましょう。
最後に
VBA(Excelマクロ)のコンパイルエラー「修正候補:ステートメントの最後」について解説いたしました。
当ブログでは、VBAマクロやPythonなど、時間を生み出すプログラミング術を公開しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
最後までお読みいただき、ありがとうございました。がんばってください!