【VBA】Select文で処理を分岐する | あじゅWeb

【VBA】Select文で処理を分岐する

エクセルVBAで使用するコードの備忘録。VBAで変数の値によって処理を分岐するSelect文のサンプルコード。値を複数同時に指定する場合や数値の範囲指定などの方法もまとめて説明します。

スポンサーリンク

基本的なSelect文の書式

Select文は変数の値がある条件を満たす場合の処理を、条件によって分岐する場合に使用します。同様の処理はIf文でも可能ですが、分岐の数が多い場合にはSelect文の方が簡潔で読みやすくなる場合があるので、主にコードの可読性の観点から使用されます。

基本的なSelect文

下記では例としてtmpという変数がとる値によってSelect文で処理を分岐させる場合を記載しています。例では「値1」・「値2」・「その他」の3パターンの分岐ですが、「値3」・「値4」と同じ書式で分岐を増やしていくことができます。

なお、コードを使用する際はカッコに囲まれた部分([***])を自分のプログラムに合わせて変更してください。

Public Sub SelectTest1()
    
    '--- 条件判定をする変数(型はなんでもOK) ---'
    Dim tmp as Long
    
    '--- ボタン操作による処理の分岐 ---'
    Select Case tmp
        Case [値1]
            'tmpが[値1]の場合の処理

        Case [値2]
            'tmpが[値2]の場合の処理
            
        Case Else
            'tmpが上記の値以外の場合の処理
            
    End Select
    
End Sub

Select文の値を範囲指定する

上記のサンプルコードでは処理の分岐をする際に特定の値のみを単独で指定していましたが、数値の場合は範囲指定をすることが可能です。

ある値よりも数値が小さい場合すべてを指定する場合はIsキーワードを使用し、ある値からある値までの範囲を指定する場合はToキーワードを使用します。

値を範囲指定をする場合のSelect文

下記のサンプルコードでは「値1より小さい」・「値1~値2」・「値2より大きい」・「それ以外」の4パターンに分けて処理を行う場合です。

こちらもコードを使用する際はカッコに囲まれた部分([***])を自分のプログラムに合わせて変更してください。

Public Sub SelectTest2()
    
    '--- 条件判定をする変数 ---'
    Dim tmp as Long
    
    '--- ボタン操作による処理の分岐 ---'
    Select Case tmp
        Case Is < [値1]
            'tmpが[値1]より小さい場合の処理

        Case [値1] to [値2]
            'tmpが[値1]~[値2]の場合の処理
        
        Case Is > [値2]
            'tmpが[値2]より大きい場合の処理
            
        Case Else
            'tmpが上記の値以外の場合の処理
            
    End Select
    
End Sub

Select文の値を複数指定する

値を一つではなく複数指定(OR)する場合はCaseの後に明示する値をコンマ(,)でつなげてやればOKです。

値を複数指定をする場合のSelect文

下記のサンプルコードでは「値1 or 値2 or 値3」・「値4 or 値5」・「それ以外」の3パターンに分けて処理を行う場合です。

こちらもコードを使用する際はカッコに囲まれた部分([***])を自分のプログラムに合わせて変更してください。

Public Sub SelectTest3()
    
    '--- 条件判定をする変数(型はなんでもOK) ---'
    Dim tmp as Long
    
    '--- ボタン操作による処理の分岐 ---'
    Select Case tmp
        Case [値1],[値2],[値3]
            'tmpが[値1] or [値2] or [値3]の場合の処理

        Case [値4],[値5]
            'tmpが[値4] or [値5]の場合の処理
        
        Case Else
            'tmpが上記の値以外の場合の処理
            
    End Select
    
End Sub