Select Case文の使い方と複数条件の設定方法:Access VBA入門

Select Case文はIF文と同じ条件判断を行います。IF文より構造が簡単で分かり易くなります。

Select Case文の終わりには必ずEnd Selectが必要です。

構文:
Select Case 判定する値
 Case 条件1
  条件1が満たされた時、実行する処理
 Case 条件2
  条件2が満たされた時、実行する処理
 …
 Case Else
  上の条件に当てはまらなかった時、実行する処理
End Select
BackHome BackVBA入門


● If文をSelect Case文に変換

前回作成した下の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文に変換すると下のようになります。
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」を入力します。
Input BOXが表示されるので「3」を入力

「Case "3"」で真(True)と判定され、MsgBoxが表示されます。
「Case "3"」で真(True)と判定された結果

上は文字でしたが、下のように数値でも可能です。
Select Case文を文字から数値へ

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をコンマで区切ると、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 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


BackHome BackVBA入門

Copyright(C) FeedSoft