更新日:、 作成日:

VBA If 文で条件分岐する

はじめに

Excel VBA マクロの If 文で処理を分岐したり、複数条件にする方法を紹介します。

If 条件 Then のようにして、条件に一致するときの処理ができます。

ElseIf 条件 Then のようにして、条件を増やせます。

Else のようにして、すべての条件と一致しないときの処理ができます。

値 = 値 のようにして、等しいときの条件を入力できます。

条件 And 条件条件 Or 条件 のようにして、And と Or で複数条件を入力できます。

簡単に複数に分岐するには「Select 文」をご覧ください。

If

Then

条件に一致するときだけ処理を実行します。

If 条件 Then のように入力し、改行して End If を入力します。条件に一致するときに If の中の処理が実行されます。そうでないときは、その処理は行われません。

If 0 = 0 Then
    Debug.Print("True") ' True、条件に一致しているとき
End If

条件の入力については下記の「If の条件を入力する」をご覧ください。

Else

条件に一致しないときだけ処理を実行します。

If 文の中に Else を入力します。すべての条件と一致しないときに Else の中の処理が実行されます。

If 0 = 1 Then
    Debug.Print("True")  ' True、条件に一致しているとき
Else
    Debug.Print("False") ' False、条件に一致しないとき
End If

このように If Then Else が If 文の基本的な形です。分岐を増やすには ElseIf を使います。

ElseIf

分岐する条件を増やします。

If 文の中に ElseIf 条件 Then のように入力します。この条件に一致するときに ElseIf の中の処理が実行されます。

Dim i As Integer
i = 2

If i = 0 Then
    Debug.Print("0")    ' 0、i が 0 のとき
ElseIf i = 1 Then
    Debug.Print("1")    ' 1、i が 1 のとき
ElseIf i = 2 Then
    Debug.Print("2")    ' 2、i が 2 のとき
Else
    Debug.Print("Else") ' Else、それ以外のとき
End If

Elseif を入力した数だけ分岐を増やせます。「Select 文」を使用すると、簡単に分岐できます。

If の条件を入力する

条件には Boolean の値を指定します。True が条件に一致している、False は条件に一致していないことを表します。

値 比較演算子 値 のように入力します。変数の値が「等しい」や「大きい」などを条件にできます。

演算子 演算名 使用例 結果
=等しい1 = 2False
<>等しくない1 <> 2True
>大きい1 > 2False
<小さい1 < 2True
>=以上1 >= 2False
<=以下1 <= 2True
Dim i As Integer

i = 0
If i = 0 Then
    Debug.Print("等しい")
End If

i = 1
If i > 0 Then
    Debug.Print("より大きい")
End If

i = 0
If i <= 1 Then
    Debug.Print("以下")
End If

文字列を比較する Like 演算子や、参照型のオブジェクトを比較する Is 演算子もあります。

If "あいうえお" Like "あい*" Then ' "あい" で始まるか
    Debug.Print("あい")
End If

If "AZZ" Like "[A-C]*" Then ' A ~ C の文字で始まるか
    Debug.Print("A ~ C")
End If
If Sheets(1) Is Sheets(1 Then ' Sheet1 と Sheet1 は同じか
    Debug.Print("Sheet1")
End If

If Sheets(1) Is Sheets(2) Then ' Sheet1 と Sheet2 は同じか
    Debug.Print("Sheet2")
End If
比較演算子について詳しくは「演算子」をご覧ください。

If に複数条件を入力する

論理演算子を使用して、複数条件や 3 つ以上の条件にできます。

条件 論理演算子 条件 のように入力します。すべての条件に一致するときや、1 つでも一致するときなどの条件にできます。

演算子 演算名 使用例 結果
And論理積True And True
True And False
False And False
True
False
False
Or論理和True Or True
True Or False
False Or False
True
True
False
Not論理否定Not True
Not False
False
True
Xor排他的論理和True Xor True
True Xor False
False Xor False
False
True
False

すべての条件に一致するときは 条件 And 条件 のように入力します。

どれか 1 つでも条件に一致するときは 条件 Or 条件 のように入力します。

Dim i As Integer
i = 0

Dim s As String
s = "Tips"

If i = 0 And s = "Tips" Then
    Debug.Print("And") ' i が 0「かつ」s が "Tips" のとき
End If

If i = 0 Or s = "Tips" Then
    Debug.Print("Or")  ' i が 0「または」s が "Tips" のとき
End If

And や Or を組み合わせて 3 つ以上の条件にできます。

比較するときは条件を () で囲むと見やすくなります。また演算子の優先順位が最上位になります。

Dim i As Integer
i = 0

Dim s As String
s = "Tips"

If (i >= 0 And i <= 10) And (s = "Tips") Then
    Debug.Print("And") ' i が 0 以上「かつ」10 以下で、s が "Tips" のとき
End If

If (i < 0 Or i > 10) And (s = "Tips") Then
    Debug.Print("Or")  ' i が 0 より小さい「または」10 より大きい、「かつ」s が "Tips" のとき
End If
論理演算子や優先順位について詳しくは「演算子」をご覧ください。