VBA・PYTHON・SQL コードの部屋 

EXCEL・ACCESS・VBA・PYTHON・SQLなどのCODE部屋

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

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

広告

条件は○か×かのようにどちらかだけを選択する場合だけではありません。例えば変数に格納された文字列を色々な値を比較する場合など複数の条件判断を行う場合もあります。このような時には1つのif文の中に複数の条件分岐を記述することが出来ます。

構文は下記の通りです。

If 条件式1 Then
    (条件式1がTrueの時に行う処理1)
    (条件式1がTrueの時に行う処理2)
ElseIf 条件式2 Then
    (条件式2がTrueの時に行う処理1)
    (条件式2がTrueの時に行う処理2)
ElseIf 条件式3 Then
    (条件式3がTrueの時に行う処理1)
    (条件式3がTrueの時に行う処理2)
Else
    (どの条件式もFalseの時に行う処理1)
    (どの条件式もFalseの時に行う処理2)
End If

複数の条件を記述する場合、最初の条件については「If」の後ろに記述、それ以降の条件については「ElseIf」の後ろに記述します。また最後に「Else」を記述した場合は全ての条件式で「False」になった場合の処理を記述します。条件式は何個書いても構いません。

複数の条件を記述する場合、上から順番に条件の確認が行われて行きます。

まず「条件式1」が確認され「True」であればその下に書かれた処理を実行します。実行後は「End If」の次の行に処理が移ります。

次に「条件式1」が「False」の場合には、次の条件式である「条件式2」が確認され「True」であればその下に書かれて処理を実行します。実行後は「End If」の次の行に処理が移ります。

次に「条件式1」と「条件式2」が共に「False」の場合には、次の条件式である「条件式3」が確認され「True」であればその下に書かれて処理を実行します。実行後は「End If」の次の行に処理が移ります。

最後に「条件式1」「条件式2」「条件式3」が全て「False」の場合にはその下に書かれて処理を実行します。

サンプルプログラム

では簡単なサンプルで試してみましょう。

testif3.bas

Sub テスト()
    Dim x As String
    
    x = "大阪"
    
    If x = "東京" Then
        Range("A1").Value = "お住まいは東京です"
    ElseIf x = "大阪" Then
        Range("A1").Value = "お住まいは大阪です"
    ElseIf x = "名古屋" Then
        Range("A1").Value = "お住まいは名古屋です"
    Else
        Range("A1").Value = "お住まいは分かりません"
    End If

End Sub

上記のマクロを実行すると次のようになります。

複数の条件分岐

今回は文字列型の変数に格納された値を、色々な値と比較しています。結果として変数に格納されている値は「大阪」ですので「Range("A1").Value = "お住まいは大阪です"」という処理だけが実行されています。