目次
Excel VBAで条件分岐
Excel VBA で条件分岐を行う方法について、以前、If…Then…ステートメントを紹介しました。
今回は、Select Case ステートメントを使用して、条件を判断し処理を分岐する方法を説明します。
構文
Select Case 任意の数値式または文字列式
Case 条件1
条件1を満たした場合の処理
:
Case 条件2
条件2を満たした場合の処理
:
Case Else
条件1、条件2いづれも満たさなかった場合の処理
:
End Select
条件1を満たす場合、条件1の Case 句の後から条件2の Case 句まで、最後の句(この場合Case Else)については End Select までのステートメントが実行されます。
その後、End Select の次のステートメントに制御が渡されます。
任意の数値式または文字列式が複数の Case 句の条件に一致する場合は、最初に一致した句に続くステートメントのみが実行されます。
Case Else 句は、その他のどの Case の条件(この場合、条件1、条件2)も満たさない場合に実行する処理を記述するために使用します。
Case Else は必須ではありませんが、どの Case の条件にも満たさない値を処理するために、Select Case ブロック内で使用することをお勧めします。
どの Case の条件にも満たさず、Case Elseステートメンもない場合は、End Select の後のステートメントから実行が続行されます。
以下の例では、判定1の引数(flg)の値を条件と比較します。
Sub 判定1(flg)
Select Case flg
Case 1
MsgBox “赤です”
Case 2
MsgBox “青です”
Case 3
MsgBox “黄です”
Case Else
MsgBox “その他の色です”
End Select
End Sub
引数に1を指定して実行すると、実行結果は以下のようになります。
複数条件を指定する
Case句に複数条件(OR)を指定する場合は、”,”(カンマ)で区切ります。
Sub 判定2(flg)
Select Case flg
Case 1, 2
MsgBox “赤です”
Case 3, 4, 5
MsgBox “青です”
Case Else
MsgBox “その他の色です”
End Select
End Sub
1つ目の条件「1, 2」では、flgの値が1または2の場合にメッセージ“赤です”が表示されます。
引数に2を指定して実行すると、実行結果は以下のようになります。
Toを使用し範囲を指定する
Case句の条件にToキーワードを使用し範囲を指定することができます。
Sub 判定3(flg)
Select Case flg
Case 1 To 3
MsgBox “赤です”
Case 5 To 10
MsgBox “青です”
Case Else
MsgBox “その他の色です”
End Select
End Sub
1つ目の条件「1 To 3」では、flgの値が1から3の場合にメッセージ“赤です”が表示されます。
引数に5を指定して実行すると、実行結果は以下のようになります。
Isを使用し比較条件を指定する
Case句に比較演算子 (=、<>、<、<=、>、または >=) と共に、条件にIsキーワードを使用し比較条件を指定することができます。
Sub 判定4(flg)
Select Case flg
Case Is <= 3
MsgBox “赤です”
Case Is >= 5, Is < 10
MsgBox “青です”
Case Else
MsgBox “その他の色です”
End Select
End Sub
1つ目の条件「<= 3」では、flgの値が3以下の場合にメッセージ“赤です”が表示されます。
引数に5を指定して実行すると、実行結果は以下のようになります。
複数の式または範囲を指定する
Case 句では、複数の式または範囲を指定することができます。
Sub 判定5(flg)
Select Case flg
Case 1 To 4, 7 To 9, 11, 13, Is > 15
MsgBox “赤です”
Case Else
MsgBox “その他の色です”
End Select
End Sub
引数に20を指定して実行すると、実行結果は以下のようになります。
まとめ
Select Caseステートメントは条件分岐に使用しますが、条件によって分岐が多い場合に使うと便利です。
以上、Excel VBA でSelect Case ステートメントを使用して、条件を判断し処理を分岐するプログラムでした。