VBAで「Elseに対するIfがありません」というエラーが発生する原因とその解決法を解説します。質問者のコードを例にして、どの部分が誤っているのかを確認し、正しいコード修正方法を紹介します。
1. エラーの原因
VBAで「Elseに対するIfがありません」と表示される原因は、構文エラーや条件式の欠如が主な理由です。このエラーは、Else文が正しく閉じられていない場合に発生します。質問者のコードでは、Else文の後の書式に誤りがあります。
2. コードの修正方法
質問者のコードでは、Else文の後に「:」が使われているため、VBAがそれを誤って解釈しています。VBAでは、Else文の後にコロン(:)は必要なく、直接MsgBoxなどを記述します。以下に修正したコードを示します。
修正コード
If BWbook.Worksheets("Sheet1").Range("C5") = "キャット" Then
ptn = 5
ElseIf BWbook.Worksheets("Sheet1").Range("C4") = "キャット" Then
ptn = 4
ElseIf BWbook.Worksheets("Sheet1").Range("C3") = "キャット" Then
ptn = 3
Else
MsgBox "BWFLの書式を確認"
End If
この修正により、構文エラーが解消され、正常に動作するようになります。
3. 他のよくある原因と解決法
VBAでは、構文ミス以外にも以下の点が原因でエラーが発生することがあります。
- インデントのズレ: If文やElseIf、Else文が正しくインデントされていないと、VBAがそれらを正しく認識できない場合があります。
- ElseIfの欠如: Else文に対応するElseIfが抜けている場合もエラーが発生します。
4. まとめ
VBAで「Elseに対するIfがありません」というエラーが発生する場合、主にElse文の書き方に問題があります。正しく構文を整えることで、エラーを解消することができます。修正後のコードでは、必ず「End If」でIf文を閉じるようにしましょう。


コメント