「Else に対応する If がありません。」の原因・解決方法

Else に対応する If がありません。

エラー内容

VBAコンパイル時に、「Else に対応する If がありません。」と表示される。

Else に対応する If がありません。

原因と解決方法

おもに次の2つの原因と解決方法が考えられます。

原因1. Elseの直前にEnd If

解説

Elseの直前にEnd Ifがあると、そこでIf文は終了します。

 

解決方法

If文の基本の書き方は、次のようになります。

If 条件1
  処理1 ←条件1の時に、プログラムですること
ElseIf 条件2
  処理2 ←条件2の時に、プログラムですること
Else
  処理3 ←条件1と2以外の時に、プログラムですること
End If

なので、Elseの直前にあるEnd Ifを削除して、次のようにIf文の構造を正しくします。

「ちょっとIf文わからなくなった・・・」という人は、If文の基本的な書き方・使い方【エクセルVBA超入門】も参考にしてください。

条件分岐|If文の基本的な書き方・使い方
プログラミングを始めたばかりだと「プログラムができれば、何でも自動でパソコンがしてくれる」と思う人もいます。 たしかにプログラムを組めば自動でパソコンに処理をさせることはできますが、判断する時の条件は人間が教えてあげないといけません。...

 

原因2. If文を1行で書いている

解説

If文の条件と処理を1行で書くと、End Ifがなくても、その1行でIf文は完結します。

次のプログラムは正しそうに見えますが、Else Ifの前でIf文が完結しているのでエラーとなっています。

 

解決方法

条件と処理をそれぞれ別の行に書きましょう。
また、字下げをすることで、構造がわかりやすくなりバグも少なくなります。

POINT
数行詰めるために、If文を無理して1行にする必要はありません。
それよりも条件と処理をそれぞれ別の行に書いて、構造の見やすいプログラムにしましょう。

 

関連記事

VBAエラー原因・解決方法
成果を出す5つのポイント
タイトルとURLをコピーしました