一度に複数の条件判断を行う(If..ElseIf)

If 文を使った条件分岐では 1 つの条件式で True か False かで処理を分けるだけでなく、複数の条件式を使って一つの If 文の中でより複雑な条件分岐を記述することができます。ここでは Excel VBA で一度に複数の条件分岐を行う方法について解説します。

(Last modified: )

一度に複数の条件判断を行う

Excel VBA で If 文で一度に複数の条件式を指定する場合は次の書式を使用します。

If 条件式1 Then
    条件式1がTrueの時に行う処理
ElseIf 条件式2 Then
    条件式2がTrueの時に行う処理
ElseIf 条件式3 Then
    条件式3がTrueの時に行う処理
Else
    いずれの条件式もFalseの時に行う処理
End If

If のあとに最初の条件式を記述します。この条件式が「True」だった場合は Then から最初の ElseIf までの処理を行い、終わったら IF 文の次の処理へ移ります。

最初の条件が「False」だった場合は 2 つ目の条件式を評価し、「True」だった場合は Then のあとの ElseIf から次の ElseIf までの処理を行い、終わったら IF 文の次の処理へ移ります。

同じように記述した条件式の数だけ繰り返します。最後にすべての条件式が「False」だった場合に Else から End If までの処理を実行します。この部分は省略しても構いません。

どこかの条件式が「True」になった場合は、そのあとに記述された処理を実行したあと If 文の次の処理へ移る点に注意してください。一度「True」になった場合はそれ以降の条件式は評価されません。また複数の条件式を記述する場合は上から順に評価されていきますので、記述する順番もご注意ください。

なお If 文で実行する処理の中に別の If 文を記述してより複雑な条件分岐を行うこともできます。詳しくは「If文の中にIf文を記述する」を参照されてください。

サンプルコード

それでは簡単なサンプルを作成してみます。

Option Explicit

Sub テスト()
    Dim result As Integer
    
    result = Range("B2").Value
    
    If result > 70 Then
        MsgBox "合格です"
    ElseIf result > 50 Then
        MsgBox "追加レポートが必要です"
    Else
        MsgBox "不合格です"
    End If
End Sub

B2 セルの値を取得し、最初の条件式で 70 よりも大きいかどうかを調べ、次の条件式で 50 よりも大きいかどうかを調べます。それでは最初にワークシートの B2 セルに 64 と入力しました。

一度に複数の条件判断を行う(1)

先ほどのプログラムを実行します。

一度に複数の条件判断を行う(2)

今回は B2 セルの値が 70 よりも小さいので最初の条件式は「False」となりますが、 50 よりも大きいので次の条件式は Trueとなります。そのため ElseIf から Else までの処理が実行されます。

一度に複数の条件判断を行う(3)

次にワークシートの B2 セルの値を 45 に変更し、再度プログラムを実行してみました。今度は 2 つの条件式がどちらも「False」となるため Else から End Ifまでの処理が実行されました。

一度に複数の条件判断を行う(4)

このように If..ElseIf 文を使用することで、複数の条件式を使ったより複雑な条件分岐を行うことができます。

-- --

Excel VBA で一度に複数の条件分岐を行う方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。