< スポンサーリンク >

Excel VBA 条件によって処理を変える

Excel VBA で条件によって処理を変える時は「If...Then...Elseステートメント」や「Select Caseステートメント」を使います。

 

If...Then...Else 構文

If 条件式 Then
    条件式が真(True)の場合の処理
Else
    条件式が偽(False)の場合の処理
End If

上記は、条件式が1つの場合(If...Then...Else ステートメント)

If 条件式1 Then
    条件式1が真(True)の場合の処理
Else If 条件式2 Then
    条件式2が真(True)の場合の処理
Else If 条件式3 Then
    条件式3が真(True)の場合の処理
Else
    全ての条件式が偽(False)の場合の処理
End If

上記は、条件式が2つ以上の場合(If...Then...ElseIf ステートメント)

 

If...Then...Else ステートメント

Sub IfTest1()
    Dim a As Integer
    a = 1
    If a = 1 Then
        MsgBox "aは1です"
    Else
        MsgBox "aは1ではありません"
    End If
End Sub

 

If...Then...ElseIf ステートメント

Sub IfTest2()
    Dim a As Integer
    a = 4
    If a = 1 Then
        MsgBox "aは1です"
    ElseIf a = 2 Then
        MsgBox "aは2です"
    ElseIf a = 3 Then
        MsgBox "aは3です"
    Else
        MsgBox "aは1でも2でも3でもありません"
    End If
End Sub

 

Select Case 構文

Select Case 変数名または条件式
    Case 条件1
        条件式1が真(True)の場合の処理
    Case 条件2
        条件式2が真(True)の場合の処理
    Case Else         全ての条件式が偽(False)の場合の処理
End Select

Select Case ステートメントは、上の行から順番に実行されていくので、条件が一致した時の処理以後はSelect Case ステートメントを抜けるので、その後の判定はされません。

 

成績を判定する

Sub SelectCaseTest1()
    Dim tokuten As Integer
    tokuten = 59
    Select Case tokuten
        Case 90 To 100  ' tokutenが90以上100以下なら
            MsgBox "成績は秀です"
        Case 80 To 89  ' tokutenが80以上89以下なら
            MsgBox "成績は優です"
        Case 70 To 79  ' tokutenが70以上79以下なら
            MsgBox "成績は良です"
        Case 60 To 69  ' tokutenが60以上69以下なら
            MsgBox "成績は可です"
        Case Else  ' tokutenが全ての条件に合わないなら
            MsgBox "成績は不可です"
    End Select
End Sub

下記は比較演算子を使った場合です。(上記と同じ)

Sub SelectCaseTest2()
    Dim tokuten As Integer
    tokuten = 90
    Select Case tokuten
        Case Is >= 90  ' tokutenが90以上なら
            MsgBox "成績は秀です"
        Case Is >= 80  ' tokutenが80以上なら
            MsgBox "成績は優です"
        Case Is >= 70  ' tokutenが70以上なら
            MsgBox "成績は良です"
        Case Is >= 60  ' tokutenが60以上なら
            MsgBox "成績は可です"
        Case Else  ' tokutenが全ての条件に合わないなら
            MsgBox "成績は不可です"
    End Select
End Sub

 

その他の例

Sub SelectCaseTest3()
    Dim i As Variant
    i = "aiueo"
    Select Case i
        Case 1 To 5
            MsgBox "1~5の間です"
        Case 6, 7, 8
            MsgBox "6,7,8のいずれかです"
        Case Else
            MsgBox "どれでもありません"
    End Select
End Sub

< スポンサーリンク >



サブコンテンツ

このページの先頭へ