大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、「Select Case」を使う方法について解説していきます。「Select Case」を使えば、範囲や、Likeとワイルドカード、複数条件での条件分岐をすることができます。「Select Case」をうまく使えば、条件分岐の記述をシンプル化することができますので、マスターしていきましょう。

はじめに

この記事では、「Select Case」の使い方について、ご紹介します。

「Select Case」は、条件分岐したい場合に使うことができます。

「Select Case」の使い方としては、次の方法があります。

  • 比較演算子を使って分岐する
  • 範囲で分岐する
  • 「Like」を使ってワイルドカードで分岐する
  • 複数条件で分岐する

といった感じです。

うまく使えば、If文よりシンプルに記述することができますので、Ifを主軸に置きつつ「Select Case」を使っていくといいです。

では、「Select Case」の使い方について、解説していきます。

この記事を読むメリット

  • 「Select Case」の使い方がわかります

目次

Select Caseで条件分岐する

「SelectCase」で条件分岐してみます。

「1~3」で分岐してみる

「1~3」で分岐してみます。

「1」の場合

変数が「1」の場合は、「1」の条件に一致します。

Sub TEST1()
    
    i = 1
    
    Select Case i
    Case 1
        MsgBox "1です"
    Case 2
        MsgBox "2です"
    Case 3
        MsgBox "3です"
    Case Else
        MsgBox "1~3以外です"
    End Select
    
End Sub

実行してみます。

変数が「1」の場合は、「1」の条件に一致します

変数が「1」の場合は、「1」の条件に一致しました。

「2」の場合

変数が「2」の場合は、「2」の条件に一致します。

Sub TEST2()
    
    i = 2
    
    Select Case i
    Case 1
        MsgBox "1です"
    Case 2
        MsgBox "2です"
    Case 3
        MsgBox "3です"
    Case Else
        MsgBox "1~3以外です"
    End Select
    
End Sub

では、実行してみます。

変数が「2」の場合は、「2」の条件に一致します

変数が「2」の場合は、「2」の条件に一致しました。

「3」の場合

変数が「3」の場合は、「3」の条件に一致します。

Sub TEST3()
    
    i = 3
    
    Select Case i
    Case 1
        MsgBox "1です"
    Case 2
        MsgBox "2です"
    Case 3
        MsgBox "3です"
    Case Else
        MsgBox "1~3以外です"
    End Select
    
End Sub

では、実行してみます。

変数が「3」の場合は、「3」の条件に一致します

変数が「3」の場合は、「3」の条件に一致しました。

「4」の場合

変数が「4」の場合、「1、2、3」以外の条件で「Else」の条件に一致します。

Sub TEST4()
    
    i = 4
    
    Select Case i
    Case 1
        MsgBox "1です"
    Case 2
        MsgBox "2です"
    Case 3
        MsgBox "3です"
    Case Else
        MsgBox "1~3以外です"
    End Select
    
End Sub

では、実行してみます。

変数が「4」の場合、「1、2、3」以外の条件で「Else」の条件に一致します

変数が「4」の場合、「1、2、3」以外の条件で「Else」の条件に一致しました。

といった感じで、条件分岐することができます。

比較演算子を使って分岐する

「Select Case」では、「比較演算子」を使って分岐することもできます。

大きい「>」

大きい「>」の比較演算子を使って、条件分岐してみます。

「4」の場合

変数が「4」の場合、「3」より大きい条件に一致します。

Sub TEST5()
    
    i = 4
    
    Select Case i
    Case Is > 3
        MsgBox "3より大きい"
    Case Is > 2
        MsgBox "2より大きい"
    Case Is > 1
        MsgBox "1より大きい"
    End Select
    
End Sub

では、実行してみます。

変数が「4」の場合、「3」より大きい条件に一致します

変数が「4」の場合、「3」より大きい条件に一致しました。

「3」の場合

変数が「3」の場合、「2」より大きい条件に一致します。

Sub TEST6()
    
    i = 3
    
    Select Case i
    Case Is > 3
        MsgBox "3より大きい"
    Case Is > 2
        MsgBox "2より大きい"
    Case Is > 1
        MsgBox "1より大きい"
    End Select
    
End Sub

実行してみます。

変数が「3」の場合、「2」より大きい条件に一致します

変数が「3」の場合、「2」より大きい条件に一致しました。

「2」の場合

変数が「2」の場合、「1」より大きい条件に一致します。

Sub TEST7()
    
    i = 2
    
    Select Case i
    Case Is > 3
        MsgBox "3より大きい"
    Case Is > 2
        MsgBox "2より大きい"
    Case Is > 1
        MsgBox "1より大きい"
    End Select
    
End Sub

実行してみます。

変数が「2」の場合、「1」より大きい条件に一致します

変数が「2」の場合、「1」より大きい条件に一致しました。

以上「>=」

以上「>=」の比較演算子を使って、条件分岐してみます。

「3」の場合

変数が「3」の場合、「3」以上の条件に一致します。

Sub TEST8()
    
    i = 3
    
    Select Case i
    Case Is >= 3
        MsgBox "3以上"
    Case Is >= 2
        MsgBox "2以上"
    Case Is >= 1
        MsgBox "1以上"
    End Select
    
End Sub

実行してみます。

変数が「3」の場合、「3」以上の条件に一致します

変数が「3」の場合、「3」以上の条件に一致しました。

「2」の場合

変数が「2」の場合、「2」以上の条件に一致します。

Sub TEST9()
    
    i = 2
    
    Select Case i
    Case Is >= 3
        MsgBox "3以上"
    Case Is >= 2
        MsgBox "2以上"
    Case Is >= 1
        MsgBox "1以上"
    End Select
    
End Sub

実行してみます。

変数が「2」の場合、「2」以上の条件に一致します

変数が「2」の場合、「2」以上の条件に一致しました。

「1」の場合

変数が「1」の場合、「1」以上の条件に一致します。

Sub TEST10()
    
    i = 1
    
    Select Case i
    Case Is >= 3
        MsgBox "3以上"
    Case Is >= 2
        MsgBox "2以上"
    Case Is >= 1
        MsgBox "1以上"
    End Select
    
End Sub

実行してみます。

変数が「1」の場合、「1」以上の条件に一致します

変数が「1」の場合、「1」以上の条件に一致しました。

小さい「<」

小さい「<」の比較演算子で条件分岐してみます。

「0」の場合

変数が「0」の場合、「1」より小さい条件に一致します。

Sub TEST11()
    
    i = 0
    
    Select Case i
    Case Is < 1
        MsgBox "1より小さい"
    Case Is < 2
        MsgBox "2より小さい"
    Case Is < 3
        MsgBox "3より小さい"
    End Select
    
End Sub

実行してみます。

変数が「0」の場合、「1」より小さい条件に一致します

変数が「0」の場合、「1」より小さい条件に一致しました。

「1」の場合

変数が「1」の場合、「2」より小さい条件に一致します。

Sub TEST12()
    
    i = 1
    
    Select Case i
    Case Is < 1
        MsgBox "1より小さい"
    Case Is < 2
        MsgBox "2より小さい"
    Case Is < 3
        MsgBox "3より小さい"
    End Select
    
End Sub

実行してみます。

変数が「1」の場合、「2」より小さい条件に一致します

変数が「1」の場合、「2」より小さい条件に一致しました。

「2」の場合

変数が「2」の場合、「3」より小さい条件に一致します。

Sub TEST13()
    
    i = 2
    
    Select Case i
    Case Is < 1
        MsgBox "1より小さい"
    Case Is < 2
        MsgBox "2より小さい"
    Case Is < 3
        MsgBox "3より小さい"
    End Select
    
End Sub

実行してみます。

変数が「2」の場合、「3」より小さい条件に一致します

変数が「2」の場合、「3」より小さい条件に一致しました。

以下「<=」

以下「<=」の比較演算子で、条件分岐してみます。

「1」の場合

変数が「1」の場合、「1」以下の条件に一致します。

Sub TEST14()
    
    i = 1
    
    Select Case i
    Case Is <= 1
        MsgBox "1以下"
    Case Is <= 2
        MsgBox "2以下"
    Case Is <= 3
        MsgBox "3以下"
    End Select
    
End Sub

実行してみます。

変数が「1」の場合、「1」以下の条件に一致します

変数が「1」の場合、「1」以下の条件に一致しました。

「2」の場合

変数が「2」の場合、「2」以下の条件に一致します。

Sub TEST15()
    
    i = 2
    
    Select Case i
    Case Is <= 1
        MsgBox "1以下"
    Case Is <= 2
        MsgBox "2以下"
    Case Is <= 3
        MsgBox "3以下"
    End Select
    
End Sub

実行してみます。

変数が「2」の場合、「2」以下の条件に一致します

変数が「2」の場合、「2」以下の条件に一致しました。

「3」の場合

変数が「3」の場合、「3」以下の条件に一致します。

Sub TEST16()
    
    i = 3
    
    Select Case i
    Case Is <= 1
        MsgBox "1以下"
    Case Is <= 2
        MsgBox "2以下"
    Case Is <= 3
        MsgBox "3以下"
    End Select
    
End Sub

実行してみます。

変数が「3」の場合、「3」以下の条件に一致します

変数が「3」の場合、「3」以下の条件に一致しました。

等しくない「<>」

等しくない「<>」の比較演算子で、条件分岐してみます。

「2」の場合

変数が「2」の場合、「1以外の条件に一致します。

Sub TEST17()
    
    i = 2
    
    Select Case i
    Case 1
        MsgBox "1です"
    Case Is <> 1
        MsgBox "1以外です"
    End Select
        
End Sub

実行してみます。

変数が「2」の場合、「1以外の条件に一致します

変数が「2」の場合、「1以外の条件に一致しました。

こんな感じで、「比較演算子」を使って「Select Case」で条件分岐することができます。

範囲で分岐する

「Select Case」は、「範囲」で分岐することができます。

「To」を使う

「To」を使って、条件分岐します。

「1」の場合

変数が「1」の場合は、「1~5」の条件に一致します。

Sub TEST18()
    
    i = 1
    
    Select Case i
    Case 1 To 5
        MsgBox "1~5です"
    Case 6 To 10
        MsgBox "6~10です"
    End Select
    
End Sub

実行してみます。

変数が「1」の場合は、「1~5」の条件に一致します

変数が「1」の場合は、「1~5」の条件に一致しました。

「6」の場合

変数が「6」の場合は、「6~10」の条件に一致します。

Sub TEST19()
    
    i = 6
    
    Select Case i
    Case 1 To 5
        MsgBox "1~5です"
    Case 6 To 10
        MsgBox "6~10です"
    End Select
    
End Sub

実行してみます。

変数が「6」の場合は、「6~10」の条件に一致します

変数が「6」の場合は、「6~10」の条件に一致しました。

「Select Case」で範囲での条件分岐を使うとシンプルに記述することができて、可読性が上がるので便利です。

ワイルドカードを使って分岐する

「ワイルドカード」を使って分岐するするには、「Like」を使います。

Select Caseの変数のところに「True」を使うという、ちょっと特殊なやり方です。

ワイルドカードを使うのであれば、「If文」を検討してもいいです。

「Like」と「*」を使う

「Like」と「*」を使って、条件分岐してみます。

「"ABC"」の場合

変数が「"ABC"」の場合、「Aを含む」条件に一致します。

Sub TEST20()
    
    i = "ABC"
    
    Select Case True
    Case i Like "*A*"
        MsgBox "Aを含みます"
    Case Not i Like "*A*"
        MsgBox "Aを含みません"
    End Select
    
End Sub

実行してみます。

変数が「

変数が「"ABC"」の場合、「Aを含む」条件に一致しました。

「"BCD"」の場合

変数が「"BCD"」の場合、「Aを含まない」条件に一致します。

Sub TEST21()
    
    i = "BCD"
    
    Select Case True
    Case i Like "*A*"
        MsgBox "Aを含みます"
    Case Not i Like "*A*"
        MsgBox "Aを含みません"
    End Select
    
End Sub

実行してみます。

変数が「

変数が「"BCD"」の場合、「Aを含まない」条件に一致しました。

「Like」と「?」を使う

「Like」と「?」を使って、条件分岐してみます。

「"AB"」の場合

変数が「"AB"」の場合は、「A+1文字」の条件に一致します。

Sub TEST22()
    
    i = "AB"
    
    Select Case True
    Case i Like "A?"
        MsgBox "A+1文字です"
    Case Not i Like "A?"
        MsgBox "A+1文字ではないです"
    End Select
    
End Sub

実行してみます。

変数が「

変数が「"AB"」の場合は、「A+1文字」の条件に一致しました。

「"ABC"」の場合

変数が「"ABC"」の場合は、「A+1文字」ではない条件に一致します。

Sub TEST23()
    
    i = "ABC"
    
    Select Case True
    Case i Like "A?"
        MsgBox "A+1文字です"
    Case Not i Like "A?"
        MsgBox "A+1文字ではないです"
    End Select
    
End Sub

実行してみます。

変数が「

変数が「"ABC"」の場合は、「A+1文字」ではない条件に一致しました。

「Like」と「#」を使う

「Like」と「#」を使って、条件分岐してみます。

「"A1"」の場合

変数が「"A1"」の場合、「A+数字1文字」の条件に一致します。

Sub TEST24()
    
    i = "A1"
    
    Select Case True
    Case i Like "A#"
        MsgBox "A+数字1文字です"
    Case Not i Like "A#"
        MsgBox "A+数字1文字ではないです"
    End Select
    
End Sub

実行してみます。

変数が「

変数が「"A1"」の場合、「A+数字1文字」の条件に一致しました。

「"AB"」の場合

変数が「"AB"」の場合は、「A+数字1文字」ではない条件に一致します。

Sub TEST25()
    
    i = "AB"
    
    Select Case True
    Case i Like "A#"
        MsgBox "A+数字1文字です"
    Case Not i Like "A#"
        MsgBox "A+数字1文字ではないです"
    End Select
    
End Sub

実行してみます。

変数が「

変数が「"AB"」の場合は、「A+数字1文字」ではない条件に一致しました。

複数条件で分岐する

「Sslect Case」で「複数条件」で分岐してみます。

「Or条件」であれば、基本的な機能で分岐することができます。

ただ、「And条件」は、「True」を使うという方法で、条件分岐します。

Or条件で分岐する

「Or条件」で条件分岐してみます。

「1」の場合

変数が、「1」の場合だと、「1か2か3」の条件に一致します。

Sub TEST26()
    
    i = 1
    
    Select Case i
    Case 1, 2, 3
        MsgBox "1か2か3です"
    Case Else
        MsgBox "1か2か3以外です"
    End Select
    
End Sub

実行してみます。

変数が、「1」の場合だと、「1か2か3」の条件に一致します

変数が、「1」の場合だと、「1か2か3」の条件に一致しました。

「2」の場合

変数が、「2」の場合でも、「1か2か3」の条件に一致します。

Sub TEST27()
    
    i = 2
    
    Select Case i
    Case 1, 2, 3
        MsgBox "1か2か3です"
    Case Else
        MsgBox "1か2か3以外です"
    End Select
    
End Sub

実行してみます。

変数が、「2」の場合でも、「1か2か3」の条件に一致します

変数が、「2」の場合でも、「1か2か3」の条件に一致しました。

というように「Or条件」で簡単に分岐することができます。

And条件で分岐する

「And条件」で分岐してみます。

「True」を使うところがポイントです。

「3」の場合

変数が「3」の場合は、「1~5」の条件に一致します。

Sub TEST28()
    
    i = 3
    
    Select Case True
    Case 1 <= i And i <= 5
        MsgBox "1~5です"
    Case Else
        MsgBox "1~5以外です"
    End Select
    
End Sub

実行してみます。

変数が「3」の場合は、「1~5」の条件に一致します

変数が「3」の場合は、「1~5」の条件に一致しました。

「7」の場合

変数が「7」の場合は、「1~5」以外の条件に一致します。

Sub TEST29()
    
    i = 7
    
    Select Case True
    Case 1 <= i And i <= 5
        MsgBox "1~5です"
    Case Else
        MsgBox "1~5以外です"
    End Select
    
End Sub

実行してみます。

変数が「7」の場合は、「1~5」以外の条件に一致します

変数が「7」の場合は、「1~5」以外の条件に一致しました。

こんな感じで、「True」を使えば「And条件」でも条件分岐することができます。

おわりに

この記事では、「Select Case」の使い方について、ご紹介しました。

「Select Case」は、条件分岐したい場合に使うことができます。

「Select Case」の使い方としては、次の方法があります。

  • 比較演算子を使って分岐する
  • 範囲で分岐する
  • 「Like」を使ってワイルドカードで分岐する
  • 複数条件で分岐する

といった感じです。

うまく使えば、If文よりシンプルに記述することができますので、Ifを主軸に置きつつ「Select Case」を使っていくといいです。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す