一つの値に対して複数の条件に分岐する場合などは多分岐制御文を使用します。
VB/VBAではSelect Case~ステートメントを使用して、以下のように記述します。
【Select Case~ステートメントによる制御構文】
Select Case 比較対象
Case 値1
比較対象が値1の場合の処理
Case 値2
比較対象が値2の場合の処理
Case Else
比較対象が上記以外の場合の処理
End Select
上記のようにSelect Case~ステートメントでは条件を満たした場合の処理を各Case文のスコープ内に記述します。
どの条件にも当てはまらない場合はCase Elseに記述された処理が実行されます。
複数条件を同じCaseとしたい場合は、Caseに指定する値をカンマで区切って複数指定します。
【複数条件を同じCaseとする場合】
Select Case 比較対象
Case 値1, 値2
比較対象が値1または値2の場合の処理
Case 値3
比較対象が値3の場合の処理
Case Else
比較対象が上記以外の場合の処理
End Select
上記例では比較対象が値1および値2の場合に同じ処理が実行されます。
また、比較対象に対して比較演算子を用いて条件分岐する場合はCase Is文を使用します。
【Case Is文による比較条件分岐】
Select Case 比較対象
Case Is >= 100
比較対象が100以上の場合の処理
Case Is >= 70
比較対象が100未満70以上の場合の処理
Case Else
比較対象が上記以外の場合の処理
End Select
値の比較は上位から順に行われるので、上記例では値が「100以上」の場合と「100未満70以上」の場合と「それ以外」の場合に分かれます。
また、Select Case~ステートメントは値を範囲で指定することもできます。
【値を範囲で指定した場合】
Select Case 比較対象
Case 70 To 100
比較対象が70以上100以下の場合の処理
Case 0 To 69
比較対象が0以上69以下の場合の処理
Case Else
比較対象が上記以外の場合の処理
End Select
サンプルプログラム
Sub sample()
Dim destination As String
destination = "東京"
Select Case destination
Case "東京", "ロンドン"
MsgBox "目的地は東京またはロンドンです。"
Case "パリ"
MsgBox "目的地はパリです。"
Case "ニューヨーク"
MsgBox "目的地はニューヨークです。"
Case Else
MsgBox "目的地はその他です。"
End Select
End Sub
※ 上記例ではdestinationの値が「東京」なので「目的地は東京またはロンドンです。」とメッセージが表示されます。