VBA Select Case文の使い方(複数の条件分岐)

目次

Select Case文とは

Select Case 値{
  Case 値1 
   「値 = 値1」の時に実行される処理
  Case 値2
   「値 = 値2」の時に実行される処理
   ・・・
  Case Else
   値がどのCaseの値にも一致しない時に実行される処理
End Select
  • 複数の条件分岐を行うときに使用します。
    →if文をたくさん書くより見やすくなります。
  • 値がCaseの値と一致すれば、一致したCaseの処理のみが実行されます。
  • Case Elseは、値がどのCaseの値にも一致しない時に実行されます。省略可能です。
  • 他言語でのswitch文にあたります。
  • Excel、Accessとも同じです。

 

Select Case文で複数の条件分岐を行う

Sub test1()
    Dim color As String
    color = "yellow"
    
    Select Case color
        Case "red"
            Debug . Print "redです"
        
        Case "yellow", "green"
            Debug.Print "yellow or greenです" '表示される
            
        Case Else
            Debug.Print "other"
    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 "7 or 8です" '表示される
            
        Case Else
            Debug.Print "other"
    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 "other"
    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文の使い方(処理を繰り返す)

△上に戻る