大体でIT
大体でIT
Excel VBAで、「Select Case」を使う方法について解説していきます。「Select Case」を使えば、範囲や、Likeとワイルドカード、複数条件での条件分岐をすることができます。「Select Case」をうまく使えば、条件分岐の記述をシンプル化することができますので、マスターしていきましょう。
この記事では、「Select Case」の使い方について、ご紹介します。
「Select Case」は、条件分岐したい場合に使うことができます。
「Select Case」の使い方としては、次の方法があります。
- 比較演算子を使って分岐する
- 範囲で分岐する
- 「Like」を使ってワイルドカードで分岐する
- 複数条件で分岐する
うまく使えば、If文よりシンプルに記述することができますので、Ifを主軸に置きつつ「Select Case」を使っていくといいです。
では、「Select Case」の使い方について、解説していきます。
「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」の条件に一致しました。
「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」の条件に一致しました。
「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」の条件に一致しました。
「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」の条件に一致しました。
「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」より大きい条件に一致しました。
「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」より大きい条件に一致しました。
「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」より大きい条件に一致しました。
以上「>=」の比較演算子を使って、条件分岐してみます。
「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」以上の条件に一致しました。
「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」以上の条件に一致しました。
「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」以上の条件に一致しました。
「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」より小さい条件に一致しました。
「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」より小さい条件に一致しました。
「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」より小さい条件に一致しました。
「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」以下の条件に一致しました。
「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」以下の条件に一致しました。
「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」以下の条件に一致しました。
等しくない「<>」の比較演算子で、条件分岐してみます。
「2」の場合
Sub TEST17()
i = 2
Select Case i
Case 1
MsgBox "1です"
Case Is <> 1
MsgBox "1以外です"
End Select
End Sub
変数が「2」の場合、「1以外の条件に一致しました。
こんな感じで、「比較演算子」を使って「Select Case」で条件分岐することができます。
「Select Case」は、「範囲」で分岐することができます。
「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」の条件に一致しました。
「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」の条件に一致しました。
「Select Case」で範囲での条件分岐を使うとシンプルに記述することができて、可読性が上がるので便利です。
「ワイルドカード」を使って分岐するするには、「Like」を使います。
Select Caseの変数のところに「True」を使うという、ちょっと特殊なやり方です。
ワイルドカードを使うのであれば、「If文」を検討してもいいです。
「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」と「?」を使って、条件分岐してみます。
「"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」と「#」を使って、条件分岐してみます。
「"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」を使うという方法で、条件分岐します。
「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」の条件に一致しました。
「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」の条件に一致しました。
というように「Or条件」で簡単に分岐することができます。
「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」の条件に一致しました。
「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」以外の条件に一致しました。
こんな感じで、「True」を使えば「And条件」でも条件分岐することができます。
この記事では、「Select Case」の使い方について、ご紹介しました。
「Select Case」は、条件分岐したい場合に使うことができます。
「Select Case」の使い方としては、次の方法があります。
- 比較演算子を使って分岐する
- 範囲で分岐する
- 「Like」を使ってワイルドカードで分岐する
- 複数条件で分岐する
うまく使えば、If文よりシンプルに記述することができますので、Ifを主軸に置きつつ「Select Case」を使っていくといいです。
参考になればと思います。最後までご覧くださいまして、ありがとうございました。