Excel VBA で条件によって処理を変える時は「If…Then…Else」ステートメントや「Select Case」ステートメントを使います。
< スポンサーリンク >
If…Then…Else 構文
条件式が1つの場合(If…Then…Else ステートメント)
If 条件式 Then
条件式が真(True)の場合の処理
Else
条件式が偽(False)の場合の処理
End If
上記は、条件式が2つ以上の場合(If…Then…ElseIf ステートメント)
If 条件式1 Then
条件式1が真(True)の場合の処理
Else If 条件式2 Then
条件式2が真(True)の場合の処理
Else If 条件式3 Then
条件式3が真(True)の場合の処理
Else
全ての条件式が偽(False)の場合の処理
End If
If…Then…Else 使用例
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 ステートメントは、上の行から順番に実行されていくので、条件が一致した時の処理以後はSelect Case ステートメントを抜けるので、その後の判定はされません。
Select Case 変数名または条件式
Case 条件1
条件式1が真(True)の場合の処理
Case 条件2
条件式2が真(True)の場合の処理
Case Else
全ての条件式が偽(False)の場合の処理
End Select
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
こんな記事も書いています