Excel VBAの条件分岐:If ElseIf Else
プログラムの中で条件によって処理を分岐させたい場合があります。ここでは、条件分岐を行うのための構文 If ElseIf Else について説明します。
If 文の使い方
最もシンプルな If 文の構文は以下の通りです。
If 条件式 Then
何らかの処理
End If
条件式には True か False を返す式を指定します。条件式を評価した結果が True になる場合のみ、If 文内のブロックで記述した処理が実行されます。
たとえば、テストの点数が70点以上なら「合格」と表示されるコードを書いてみます。
' 点数を入れる変数の準備
Dim score As Integer
score = 80
If score >= 60 Then ' scoreの値が60以上かどうか判定
MsgBox "合格"
End If
score の値は80に設定しているため60より大きいので、上のプログラムを実行すると「合格」と表示されます。

scoreの値を50に変更してみましょう。
' 点数を入れる変数の準備
Dim score As Integer
score = 50
If score >= 60 Then ' scoreの値が60以上かどうか判定
MsgBox "合格"
End If
この場合、50は60未満であるから、実行しても何も表示されなくなりました。このように If 文を使うことで条件によって処理を変えることができます。
比較演算子と論理演算子
条件式には比較演算子と論理演算子が使われます。
比較演算子
比較演算子には「大きい」「小さい」「以上」「以下」「等しい」などを表す演算子で以下のようなものがあります。
| 演算子 | 説明 |
| A < B | AがBより小さい場合にTrueを返す |
| A <= B | AがB以下の場合にTrueを返す |
| A > B | AがBより大きい場合にTrueを返す |
| A >= B | AがB以上の場合にTrueを返す |
| A = B | AがBと等しい場合にTrueを返す |
| A <> B | AがBと等しくない場合にTrueを返す |
論理演算子
論理演算子は「AかつB」「AまたはB」など複数の条件を組み合わせるために利用する演算子で次のようなものがあります。
| 演算子 | 説明 |
| A And B | AとBの両方がTrueの場合にTrueを返す |
| A Or B | AかBのいずれかがTrueの場合にTrueを返す |
| Not A | AがFalseの場合にTrueを返す(TrueとFalseを反転させる) |
論理演算子を使った例を見てみましょう。
テストの点数が50点以上、70点未満の場合に「おしい!」と表示してみます。
' 点数を入れる変数の準備
Dim score As Integer
score = 68
If score >= 60 And score < 70 Then ' scoreの値が60以上かつ70未満かどうか判定
MsgBox "C判定"
End If
上のプログラムでは、変数 score に設定している68という値は、 60以上でかつ70未満であるため、If 文の条件を満たすので「C判定」と表示されます。

複数条件で分岐:ElseIf・Else
If 文で2つ以上の条件分岐をしたい場合には、ElseIf Else を使います。
If 条件式1 Then
条件式1がTrueの場合の処理
ElseIf 条件式2 Then
条件式2がTrueの場合の処理
ElseIf 条件式3 Then
条件式3がTrueの場合の処理
Else
上記のいずれの条件も成り立たない場合の処理
End
上の例では条件式は3つしかありませんが、ElseIf 文はいくつでも追加することができます。
以下は ElseIf・Elseを使って色々な条件に対応した例です。
' 点数を入れる変数の準備
Dim score As Integer
score = 40
' 点数による処理の分岐
If score >= 80 Then
MsgBox "A判定"
ElseIf score >= 70 And score < 80 Then
MsgBox "B判定"
ElseIf score >= 60 And score < 70 Then
MsgBox "C判定"
Else
MsgBox "不合格"
End If
この場合は score の値は40であるため、すべての条件を満たさないので Else 節の処理が実行され、「不合格」と表示されます。

score に設定する値を変更して色々試してみるといいでしょう。