VBA IF文のサンプル(Excel/Access)

VBAのIF文のサンプルです。Excel、Accessとも同じです。

目次

if文 if文
  ネストの構造
演算子 比較演算子
  論理演算子のAnd演算子 AかつB
  論理演算子のOr演算子 AまたはB
  論理演算子のNot演算子 Aではない
  値の一部で比較する(like演算子)

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

3行目は、変数に値をセットしています。
5行目からif文が始まります。
8行目のif文はtrueになるのでその配下の処理が実行されます。
9行目の処理が実行され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になり文字列が表示されます。

比較演算子

上記コードの=などは比較演算子です。

比較演算子は、2つの値を比べて真偽値(true/false)を返します。
条件を満たしていれば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になります。

値の一部で比較する(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以上の任意の文字を表します。

以下は、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)

△上に戻る