VBAでIf-ElseIf-Else構文を使って条件分岐を作成する際に、「Elseに対応するIfがありません」というエラーが発生することがあります。この記事では、そのエラーの原因と解決法について解説します。
エラーの原因
このエラーが発生する場合、一般的にはIf-ElseIf-Elseの構文が正しくないか、Elseブロックの前に対応する条件がない可能性があります。質問文に記載されたコードでは、条件分岐の構造が正しくないためにエラーが発生している可能性があります。
コードの修正方法
質問文のコードは以下のようになっていますが、適切に閉じられていない場合があります。
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
このコードは一見問題がなさそうですが、条件がうまく評価されていない場合にエラーが発生することがあります。解決方法は、各条件式を正しく設定し、Elseブロックが正しく評価されるようにすることです。
条件分岐の確認ポイント
VBAでは、条件が適切に評価されることを確認することが重要です。例えば、Rangeの値が予期したデータ型であるか、または文字列を比較する場合は引用符が正しく使用されているか確認しましょう。さらに、数式の実行順序や括弧の使い方を見直すと効果的です。
If BWbook.Worksheets("Sheet1").Range("C5").Value = "キャット" Then
ptn = 5
ElseIf BWbook.Worksheets("Sheet1").Range("C4").Value = "キャット" Then
ptn = 4
ElseIf BWbook.Worksheets("Sheet1").Range("C3").Value = "キャット" Then
ptn = 3
Else
MsgBox "BWFLの書式を確認"
End If
上記のように、Rangeの値を取得する際に「.Value」を使用することでエラーが解消される場合があります。
まとめ
「Elseに対応するIfがありません」というエラーは、VBAの条件分岐構文に問題があることが原因です。適切に条件を設定し、.Valueを使ってセルの値を取得することで、エラーを解決することができます。コードを実行する前に条件の整合性を確認することが大切です。

コメント