VBAコードの「Elseに対するIfがありません」エラーの原因と解決法

Visual Basic

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文を閉じるようにしましょう。

コメント

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