更新日:、 作成日:
VBA If 文で条件分岐する
はじめに
Excel VBA マクロの If 文で処理を分岐したり、複数条件にする方法を紹介します。
If 条件 Then のようにして、条件に一致するときの処理ができます。
ElseIf 条件 Then のようにして、条件を増やせます。
Else のようにして、すべての条件と一致しないときの処理ができます。
値 = 値 のようにして、等しいときの条件を入力できます。
条件 And 条件 や 条件 Or 条件 のようにして、And と Or で複数条件を入力できます。
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 = 2 | False |
<> | 等しくない | 1 <> 2 | True |
> | 大きい | 1 > 2 | False |
< | 小さい | 1 < 2 | True |
>= | 以上 | 1 >= 2 | False |
<= | 以下 | 1 <= 2 | True |
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
スポンサーリンク