Select Caseステートメントってどうやって使うの?
今回は、VBAで複数の条件を同時に判定するSelect Caseステートメントの使い方を説明します。
条件分岐には「If Thenステートメント」もありますが、「Select Caseステートメント」を利用した方が簡潔でわかりやすくなるパターンが多くあります。つまり、「どのような処理をする時に用いるのか」利用するタイミングが重要です。
そこで今回は、初心者でも「Select Caseステートメントの使い方」が理解できるような基礎的な内容をお伝えしていきます。
こんな人におすすめ
- Select Caseステートメントの基礎について学習したい
- 複数の条件を同時に判定して条件分岐するVBAを作りたい
- 使うタイミングがわからない
【エクセル マクロ/VBA】初心者が独学勉強するための本|おすすめ2冊を紹介
続きを見る
Contents
Select Caseステートメントとは
Select Caseステートメントは、VBAで複数の条件を同時に判定する時に使用する命令です。
VBAの動作としては、
- 一つの条件式をチェック
- Caseの中に条件に一致するものがある
- 処理を実行する
- 条件に一致する処理を実行した時点で終了
という流れです。
Select Case 条件式
Case 条件A
条件式の値が条件Aを満たしている場合の処理
Case 条件B
条件式の値が条件Bを満たしている場合の処理
: :
Case Else
どの条件にも一致しなかった場合の処理
End Select
Select Caseステートメントの使い方
2つの条件分岐ぐらいであれば、Ifステートメントを利用した処理で対応可能です。
しかし、条件が5つや6つなどさらに増えたとしたらどうでしょうか?
さすがにIfステートメントで処理をするのは大変ですね。
このように複数の条件が存在し処理の分岐が多くなる場合には、以下のメリットがあるためSelect Caseステートメントを使用するのがおすすめです。
Select Caseを利用するメリット
- 記述が簡潔になる
- 実行するコードが少なくなるため、処理速度も向上する
数値を条件とする場合
数値を条件にする場合は、条件の値を直接入力します。
例:条件の値が10の場合
Case 10
それでは、以下のプロシージャを用いて実際の動作を見ていきたいと思います。
Sub Test1()
Dim KAZU As String
Select Case Range("A1").Value
Case 10
KAZU = "十"
Case 100
KAZU = "百"
Case 1000
KAZU = "千"
Case 10000
KAZU = "万"
Case Else
KAZU = "入力し直してください "
End Select
MsgBox KAZU
End Sub
こちらのコードは、
- セルA1に入力されている値によって処理を分岐し
- セルA1の値が「10」の場合は変数「kazu」に「十」を代入
- セルA1の値が「100」の場合は変数「kazu」に「百」を代入
- セルA1の値が「1000」の場合は変数「kazu」に「千」を代入
- セルA1の値が「10000」の場合は変数「kazu」に「万」を代入
- それ以外の場合は変数「kazu」にエラーメッセージを代入
- 変数kazuに格納された値をメッセージボックスで表示する
という指示になっています。
Case Elseには、いずれの条件とも一致しない場合の処理を記述していますが、不要であれば省略可能です。
仮にセルA1に「100」が入っていた場合は、メッセージボックスで「百」が表示されます。
複数の条件を指定する場合
複数の条件を指定する場合は、条件の値を「 , 」で区切って指定します。
例:条件の値が「100」か「1000」の場合
Case 100,1000
それでは、複数の条件を指定する場合のプロシージャを用いて、実際の動作を見ていきましょう。
Sub Test2()
Dim GROUP As String
Select Case Range("A1").Value
Case 10, 20, 30
GROUP = "グループ1"
Case 40, 50, 60
GROUP = "グループ2"
Case 70, 80, 90, 100
GROUP = "グループ3"
Case Else
GROUP = "入力し直してください "
End Select
MsgBox GROUP
End Sub
こちらのコードは
- セルA1に入力されている値によって処理を分岐し
- セルA1の値が「10」か「20」か「30」の場合は変数「group」に「グループ1」を代入
- セルA1の値が「40」か「50」か「60」の場合は変数「group」に「グループ2」を代入
- セルA1の値が「70」か「80」か「90」か「100」の場合は変数「group」に「グループ3」を代入
- それ以外の場合は変数「group」にエラーメッセージを代入
- 変数groupに格納された値をメッセージボックスで表示する
という指示になっています。
仮にセルA1に「70」が入っていても「100」が入っていても、どちらの場合もメッセージボックスで「グループ3」が表示されます。
連続した値を条件とする場合
Select Caseステートメントで「10」〜「100」などの連続した値を条件にする場合は「値 to 値」で条件を指定します。
例:条件の値が「10」〜「100」の場合
Case 10 to 100
また、「〜以上」や「〜以下」などの条件を指定する場合は比較演算子を利用します。
この場合、「Is」というキーワードを組み合わせて記述します。
例:条件の値が「100」以上の場合
Case Is >= 100
それでは、以下のプロシージャを用いて、実際の動作を見ていきましょう。
Sub Test3()
Dim KETA As String
Select Case Range("A1").Value
Case 1 To 9
KETA = "一桁"
Case 10 To 99
KETA = "二桁"
Case Is >= 100
KETA = "三桁"
Case Else
GROUP = "範囲外の数値です "
End Select
MsgBox KETA
End Sub
こちらのコードは
- セルA1に入力されている値によって処理を分岐し
- セルA1の値が「1〜9」の場合は変数「keta」に「一桁」を代入
- セルA1の値が「10〜99」の場合は変数「keta」に「二桁」を代入
- セルA1の値が「100以上」の場合は変数「keta」に「三桁」を代入
- それ以外の場合は変数「keta」にエラーメッセージを代入
- 変数ketaに格納された値をメッセージボックスで表示する
という指示になっています。
仮にセルA1に「100」が入っていた場合は、メッセージボックスで「三桁」が表示されます。
文字列を条件とする場合
Select Caseステートメントで文字列を条件にする場合は、条件の値を「”」で囲みます。
例:条件の値が「赤」の場合
Case “赤”
それでは、以下のプロシージャを用いて、実際の動作を見ていきましょう。
Sub TEST4()
Select Case Range("A1").Value
Case "赤"
Range("A1").Font.Color = vbRed
Case "青"
Range("A1").Font.Color = vbBlue
Case "緑"
Range("A1").Font.Color = vbGreen
Case Else
MsgBox "赤、青、緑のいずれかを入力してください"
End Select
End Sub
こちらのコードは
- セルA1に入力されている値によって処理を分岐し
- セルA1の値が「赤」の場合は、フォントの色を赤に設定
- セルA1の値が「青」の場合は、フォントの色を青に設定
- セルA1の値が「緑」の場合は、フォントの色を緑に設定
- それ以外の場合は変数メッセージボックスでエラーメッセージを表示する
という指示になっています。
仮にセルA1に「赤」が入っていた場合は、セルA1の文字が赤色になります。
注意事項
条件にアルファベットを使用する際には注意が必要です。
なぜなら、アルファベットの大文字と小文字が区別されるからです。
条件の文字列を”Big”にしている場合、セルに”big”と入力してVBAを実行しても条件”Big”の処理は実行されません。
Select Caseステートメントのおさらい
今回は、複数の条件を同時に判定するSelect Caseステートメントの使い方について説明しました。
Select Caseの使い方
複数の条件を用いて処理が分岐されるような処理には、Select Caseステートメントを利用しましょう。
どのような条件を設定するかによって、上の4つのパターンを使い分けたり組み合わせたりするのがポイントです!
以上、「Select Caseステートメントの使い方|複数の条件を判定するVBA」をお伝えしました!
【エクセル マクロ/VBA】初心者が独学勉強するための本|おすすめ2冊を紹介
続きを見る