目次
if文のみ (trueのとき処理する)
条件がtrueの時のみ処理します。falseでは処理しません。
| If  条件  Then 処理 End If | 
コード
Sub test1()
    Dim num As Integer
    num = 3
    
    If num = 3 Then
        Debug.Print "ok1" 'ok1が出力される
    End If
    
    If num <> 1 Then
        Debug.Print "ok2" 'ok2が出力される
    End If
    
    If num > 2 Then
        Debug.Print "ok3" 'ok3が出力される
    End If
    
    If num >= 3 Then
        Debug.Print "ok4" 'ok4が出力される
    End If
    
    If num < 5 Then
        Debug.Print "ok5" 'ok5が出力される
    End If
    
    If num <= 3 Then
        Debug.Print "ok6" 'ok6が出力される
    End If
End Sub
- 条件が合致する場合、配下の処理が実行され、if文の処理は終了します。
- 条件が合致することをtrue(真)ともいいます。
- 条件が合致しないことをfalse(偽)ともいいます。
- Excel、Accessとも同じです。
ifとelse (trueとfalseそれぞれ処理する)
条件がtrueの時は、trueの処理をします。falseの時は、falseの処理をします。
| If (条件) Then 処理 Else 処理 End If | 
コード
Sub test1()
    Dim num As Integer
    num = 2
    
    If num = 3 Then
        Debug.Print "test1"
    Else
        Debug.Print "test2" 'test2が表示される
    End If
End Sub
ifとelseifとelse (複数の条件で処理を分ける)
| If 条件 Then 処理 ElseIf (条件) Then 処理 Else 処理 End If | 
複数の条件で処理を分けたい場合に使用します。elseは条件にあてはまらない場合に処理されます。
コード
Sub test1()
    Dim num As Integer
    num = 1
    
    If num = 0 Then
        Debug.Print "0です"
    ElseIf num = 1 Then
        Debug.Print "1です" '1ですが表示される 
    Else
        Debug.Print "それ以外です" 
    End If
End Sub
7行目のif文はtrueになるのでその配下の処理が実行されます。
8行目の処理が実行されif文を抜けます。
- 条件が合致しない場合、配下の処理は実行されず、その下(ElseIf/Else/if文終了)に進みます。
- ElseIfは、複数記述できます。省略可です。
- Elseの処理は、どの条件も合致しなかったときに実行されます。Elseは1つのみ記述できます。省略可能です。
if文の中にif文
Sub test1()
    Dim num1, num2 As Integer
    num1 = 1
    num2 = 1
    
    If num1 = 1 Then
        If num2 = 1 Then
            Debug.Print "1です" '1ですが表示される
        End If
    End If
End Sub
7行目は、if文の中にif文を記述しています。ネストの構造です。入れ子ともいいます。
6,7行目は、trueになり文字列が表示されます。
値の一部で比較する(like演算子)
like演算子とアスタリスク(*)で、前方一致、部分一致、後方一致の比較ができます。
Sub test1()
    Dim str1 As String
    str1 = "みかん"
 
    If str1 Like "み*" Then
        Debug.Print "OK" 'OKが表示される
    End If
    
    If str1 Like "み*ん" Then
        Debug.Print "OK" 'OKが表示される
    End If
    
    If str1 Like "*かん" Then
        Debug.Print "OK" 'OKが表示される
    End If
    
    If str1 Like "みかん*" Then
        Debug.Print "OK" 'OKが表示される
    End If
End Sub
アスタリスク(*)は、0以上の任意の文字を表します。
比較演算子
比較演算子は、2つの値を比べて条件を満たしていればtrue,そうでない場合はfalseを返します。
| 比較演算子 | 説明 | 
|---|---|
| a = b | aとbの値は等しい | 
| a <> b | aとbの値は等しくない | 
| a > b | aはbより大きい | 
| a >= b | aはbより大きい または 等しい | 
| a < b | aはbより小さい | 
| a <= b | aはbより小さい または 等しい | 
AかつB (論理積のAnd)
| if (左の条件式) And (右の条件式) Then | 
If文でAND演算子を使用する場合、
AND演算子の左の式と右の式の両方が条件に合致する場合にtrueになります。
Sub test1()
    Dim num1, num2 As Integer
    num1 = 2
    num2 = 2
    
    If (num1 = 2) And (num2 = 2) Then
        Debug.Print "OK" 'OKが表示される
    Else
        Debug.Print "NG"
    End If
End Sub
6行目は、左の式と右の式が共にtrueなので、trueになります。
AまたはB (論理和のOr)
| if (左の条件式) Or (右の条件式) Then | 
If文でOR演算子を使用する場合、
OR演算子の左の式または右の式のどちらかが条件に合致する場合にtrueになります。
Sub test1()
    Dim num1, num2 As Integer
    num1 = 1
    num2 = 2
    
    If (num1 = 2) Or (num2 = 2) Then
        Debug.Print "OK" 'OKが表示される
    Else
        Debug.Print "NG"
    End If
End Sub
6行目は、左の式はfalseですが右の式がtrueなのでtrueになります。
Aではない (論理否定のNot)
| if Not (条件式 ) Then | 
- 条件式がfalseの場合にtrueになります。
- 条件式がtrueの場合にfalseになります。
Sub test1()
    Dim a, b As Integer
    a = 1
    
    If Not (a = 2) Then
        Debug.Print "1" '1が表示される
    End If
    
    If Not (a = 1) Then
        Debug.Print "2"
    Else
        Debug.Print "3" '3が表示される
    End If
End Sub
5行目は値の比較でfalseになり、それを否定するのでtrueになります。
9行目は値の比較でtrueになり、それを否定するのでfalseになります。
関連の記事
