VBA Select Case文のサンプル(Excel/Access)

VBAのSelect Case文のサンプルです。他言語でのswitch文にあたります。
Excel、Accessとも同じです。

目次

Select Case文 Select Case文
  比較演算子で比較する (Is)
  範囲指定で比較する (To)
演算子 比較演算子の一覧

Select Case文

Select Case 値{
  Case 値1 
   「値 = 値1」の時に実行される処理
  Case 値2
   「値 = 値2」の時に実行される処理
   ・・・
  Case Else
   値がどのCaseの値にも一致しない時に実行される処理
End Select
  • 値がCaseの値と一致すれば、一致したCaseの処理のみが実行されます。
  • 条件が多い時は、if文よりも見やすくなります。
  • Case Elseは、値がどのCaseの値にも一致しない時に実行されます。省略可能です。

Select Case文のサンプルです。

Sub test1()
    Dim color As String
    color = "黄"
    
    Select Case color
        Case "赤"
            Debug.Print "赤です"
        
        Case "黄", "緑"
            Debug.Print "黄or緑です" '表示される
            
        Case Else
            Debug.Print "それ以外"
    End Select
End Sub

3行目は、変数に値をセットしています。
5行目からSelect文が始まります。
9行目のcaseは一致するのでその配下の処理が実行されSelect文を抜けます。

比較演算子で比較する (Is)

Case Is 比較演算子

比較演算子で比較を行う場合は、 Caseの後にIsが必要です。

Sub test1()
    Dim number1 As Integer
    number1 = 7
    
    Select Case number1
        Case Is > 10
            Debug.Print "10より大きい"
        
        Case Is = 7, 8
            Debug.Print "7or8です" '表示される
            
        Case Else
            Debug.Print "それ以外"
    End Select
End Sub

6,9行目は、Isと比較演算子で比較しています。
9行目は、7または8の場合、という意味になります。
10行目の文言が表示されます。

範囲指定で比較する (To)

Case 数値 To 数値

範囲指定で比較するときは、Toを使用します。

Sub test1()
    Dim number1 As Integer
    number1 = 17
    
    Select Case number1
        Case 1 To 10
            Debug.Print "1から10です"
        
        Case 11 To 20
            Debug.Print "11から20です" '表示される
            
        Case Else
            Debug.Print "それ以外"
    End Select
End Sub

6行目と9行目は、Toで範囲指定をしています。
10行目の文言が表示されます。

比較演算子の一覧

上記コードの=や>は比較演算子です。
以下は、VBAの比較演算子の一覧です。

比較演算子 説明
a = b aとbの値は等しい
a <> b aとbの値は等しくない
a > b aはbより大きい
a >= b aはbより大きい または 等しい
a < b aはbより小さい
a <= b aはbより小さい または 等しい

以下は、MicrosoftのVBAのSelect Case文のリンクです。
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/select-case-statement

関連の記事

VBA IF文 条件分岐を行うサンプル
VBA For文のサンプル(Excel/Access)

△上に戻る