Select Case文はIF文と同じ条件判断を行います。IF文より構造が簡単で分かり易くなります。
Select Case文の終わりには必ずEnd Selectが必要です。
構文:
Select Case 判定する値
Case 条件1
条件1が満たされた時、実行する処理
Case 条件2
条件2が満たされた時、実行する処理
…
Case Else
上の条件に当てはまらなかった時、実行する処理
End Select
● If文をSelect Case文に変換
前回作成した下のIF文をSelect Case文に変換します。
入力された文字が”1”の場合、”1”の処理を行います。 これを”5”まで行います。
Else文でそれ以外が入力された場合の処理を行います。
Sub MyIf()
Dim s As String
s = InputBox("1~9を入力してください", "入力")
If s = "1" Then
MsgBox "1が入力されました。"
ElseIf s = "2" Then
MsgBox "2が入力されました。"
ElseIf s = "3" Then
MsgBox "3が入力されました。"
ElseIf s = "4" Then
MsgBox "4が入力されました。"
ElseIf s = "5" Then
MsgBox "5が入力されました。"
Else
MsgBox "1~5以外が入力されました。"
End If
End Sub
Select Case文に変換すると下のようになります。
IF文と処理内容が同じなので、比較するとよく分かるかと思います。
Sub MySelect()
Dim s As String
s = InputBox("1~9を入力してください", "入力")
Select Case s
Case "1"
MsgBox "1が入力されました。"
Case "2"
MsgBox "2が入力されました。"
Case "3"
MsgBox "3が入力されました。"
Case "4"
MsgBox "4が入力されました。"
Case "5"
MsgBox "5が入力されました。"
Case Else
MsgBox "1~5以外が入力されました。"
End Select
End Sub
実行すると下のInput BOXが表示されるので「3」を入力します。
「Case "3"」で真(True)と判定され、MsgBoxが表示されます。
上は文字でしたが、下のように数値でも可能です。
Sub MySelect()
Dim i As Long
i = InputBox("1~9を入力してください", "入力")
Select Case i
Case 1
MsgBox "1が入力されました。"
Case 2
MsgBox "2が入力されました。"
Case 3
MsgBox "3が入力されました。"
Case 4
MsgBox "4が入力されました。"
Case 5
MsgBox "5が入力されました。"
Case Else
MsgBox "1~5以外が入力されました。"
End Select
End Sub
● Select Caseの複数条件での使用例
Caseをコンマで区切ると、OR条件で設定できます。
Case 1, 3, 5で、1か3か5の場合の判定を行っています。
Sub MySelect()
Dim i As Long
i = InputBox("1~9を入力してください", "入力")
Select Case i
Case 1, 3, 5
MsgBox "1か3か5が入力されました。"
Case 2
MsgBox "2が入力されました。"
Case 4
MsgBox "4が入力されました。"
Case Else
MsgBox "1~5以外が入力されました。"
End Select
End Sub
Case Toを使うと範囲を指定できます。
Case 1 To 4で、1から4の場合の判定を行っています。
Sub MySelect()
Dim i As Long
i = InputBox("1~9を入力してください", "入力")
Select Case i
Case 1 To 4
MsgBox "1から4が入力されました。"
Case 5
MsgBox "5が入力されました。"
Case Else
MsgBox "1~5以外が入力されました。"
End Select
End Sub
「<」や「>」を使って範囲を指定することもできます。
Case Is <= 3で3以下を、Case Is >= 4で4以上を指定しています。
Sub MySelect()
Dim i As Long
i = InputBox("1~9を入力してください", "入力")
Select Case i
Case Is <= 3
MsgBox "3以下が入力されました。"
Case Is >= 4
MsgBox "4以上が入力されました。 "
End Select
End Sub