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より大きいので、上のプログラムを実行すると「合格」と表示されます。

vba_if

scoreの値を50に変更してみましょう。

' 点数を入れる変数の準備
Dim score As Integer
score = 50

If score >= 60 Then ' scoreの値が60以上かどうか判定
    MsgBox "合格"
End If

この場合、50は60未満であるから、実行しても何も表示されなくなりました。このように If 文を使うことで条件によって処理を変えることができます。

比較演算子と論理演算子

条件式には比較演算子と論理演算子が使われます。

比較演算子

比較演算子には「大きい」「小さい」「以上」「以下」「等しい」などを表す演算子で以下のようなものがあります。

演算子説明
A < BAがBより小さい場合にTrueを返す
A <= BAがB以下の場合にTrueを返す
A > BAがBより大きい場合にTrueを返す
A >= BAがB以上の場合にTrueを返す
A = BAがBと等しい場合にTrueを返す
A <> BAがBと等しくない場合にTrueを返す

論理演算子

論理演算子は「AかつB」「AまたはB」など複数の条件を組み合わせるために利用する演算子で次のようなものがあります。

演算子説明
A And BAとBの両方がTrueの場合にTrueを返す
A Or BAかBのいずれかがTrueの場合にTrueを返す
Not AAが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判定」と表示されます。

vba_if2

複数条件で分岐: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 節の処理が実行され、「不合格」と表示されます。

vba_if3

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


イベント