9-1.条件分岐① Ifステートメント

VBAでは、条件分岐に関するステートメントとして、IfステートメントとSelect Caseステートメントがあります。今回は、Ifステートメントについて説明します。

条件分岐とは

プログラミングの処理の中で、条件分岐や反復処理といった処理方法を制御する構文を制御構造といいます。

条件分岐とは、ある条件に対して条件を満たすか(True)満たさないか(False)によって、その後の処理を分けて実行する制御構造を指します。

条件分岐の構造

Ifステートメント

1つの条件を満たす場合のみ

○構文
If 条件1 Then
 処理1
End If

○処理
条件1がTrueの場合、処理1が実行されます。
条件1がFalseの場合、Ifステートメントの処理は実行されません。

Sub サンプル1()
    Dim v As Integer
    v = 5

    If v <= 10 Then  'vは10以下なのでTrue
        MsgBox v
    End If
    
    If Selection.Value = "" Then
        Selection.Value = "空白" 'Selectionが""の場合、空白と入力
    End If


    '1行で記述することもできます。その場合、EndIfは不要です。
  If Selection.Value = "" Then Selection.Value = "空白"

End Sub

1つの条件を満たす/満たさない場合

○構文
If 条件1 Then
 処理1(条件1がTrueの場合)
Else
 処理2(条件1がFalseの場合)
End If

○処理
条件1がTrueの場合、処理1が実行されます。
条件1がFalseの場合、処理2が実行されます。

Sub サンプル2()
    
    If Selection.Value > 80 Then
        MsgBox "合格" '80より大きい場合の処理
    Else
        MsgBox "不合格" '80より大きくない場合の処理
    End If
    
End Sub

複数の条件を満たす/満たさない場合

○構文
If 条件1 Then
 処理1(条件1がTrueの場合)
ElseIf 条件2 Then
 処理2(条件1がFalse・条件2がTrueの場合)
Else
 処理3(条件1と条件2がFalseの場合)
End If

○処理
条件1がTrueの場合、処理1が実行されます。
条件1がFalse・条件2がTrueの場合、処理2が実行されます。
条件1・条件2がFalseの場合、処理3が実行されます。(Else文は省略できます)

ElseIf文は複数繰り返して記述することができます。


Sub サンプル3()
    
    If Selection.Value = 100 Then
        MsgBox "満点合格"
    ElseIf Selection.Value > 80 Then
        MsgBox "合格"
    Else
        MsgBox "不合格"
    End If
    
End Sub

複数の条件を同時に判定する場合

複数の条件を同時に判定する場合、AndまたはOrを使用します。

○すべての条件を満たす
If 条件1 And 条件2 Then
 処理(条件1と条件2がいずれもTrueの場合)
End If

○いずれかの条件を満たす
If 条件1 Or 条件2 Then
 処理(条件1または条件2のいずれかがTrueの場合)
End If

And・Orは2つ以上の条件を設定することができます。
AndとOrを組み合わせて使用することもできます。

Sub サンプル4()
    
    If Selection.Value > 80 And Selection.Offset(1).Value > 80 Then
        MsgBox "合格"
    End If
    
    If Selection.Value > 80 Or Selection.Offset(1).Value > 80 Then
        MsgBox "該当"
    End If
    
End Sub

否定条件

○構文
If Not 条件 Then
 処理(Not条件がTrueの場合)
End If

Sub サンプル5()
    
    If Not Selection.Value < 80 Then
        MsgBox "合格"
    End If
    
End Sub

コメント