VBA IF文 条件分岐を行うサンプル

VBAのIF文のサンプルです。条件で処理を分岐する時に使用します。Excel、Accessとも同じです。

目次

if文 if文とは / if文のサンプル / ネストの構造 if文の中にif文
  値の一部で比較する(like演算子)
  比較演算子
論理演算子 論理積のAnd演算子 AかつB / 論理和のOr演算子 AまたはB
  論理否定のNot演算子 Aではない

if文とは

If (条件)  Then
  処理
End If
'ElseIfとElseを書く場合
If (条件)  Then
  処理
ElseIf (条件)  Then
  処理
Else
  処理
End If
  • 条件が合致する場合、配下の処理が実行され、if文の処理は終了します。
  • 条件が合致することをtrue(真)ともいいます。
  • 条件が合致しない場合、配下の処理は実行されず、その下(ElseIf/Else)に進みます。
  • 条件が合致しないことをfalse(偽)ともいいます。
  • ElseIfは、複数記述できます。省略可です。
  • Elseは、1つのみ記述できます。省略可能です。elseの処理は、どの条件も合致しなかったときに実行されます。

if文のサンプル

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

5行目からif文が始まります。
8行目のif文はtrueになるのでその配下の処理が実行されます。
9行目の処理が実行されif文を抜けます。

ネストの構造 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より小さい または 等しい

 

論理積のAnd演算子 AかつB

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になります。

論理和のOr演算子 AまたはB

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になります。

論理否定のNot演算子 Aではない

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になります。

以下は、MicrosoftのVBAのIF文のリンクです。
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/ifthenelse-statement

関連の記事

VBA Select Case文のサンプル(Excel/Access)
VBA For文のサンプル(Excel/Access)

△上に戻る