VBAコード解説

【エクセルVBA初心者講座】Select Caseステートメントの使い方|複数の条件を判定する方法

selectcaseステートメントについて

Select Caseステートメントってどうやって使うの?

今回は、VBAで複数の条件を同時に判定するSelect Caseステートメントの使い方を説明します。

条件分岐には「If Thenステートメント」もありますが、「Select Caseステートメント」を利用した方が簡潔でわかりやすくなるパターンが多くあります。つまり、「どのような処理をする時に用いるのか」利用するタイミングが重要です。

そこで今回は、初心者でも「Select Caseステートメントの使い方」が理解できるような基礎的な内容をお伝えしていきます。

こんな人におすすめ

  • Select Caseステートメントの基礎について学習したい
  • 複数の条件を同時に判定して条件分岐するVBAを作りたい
  • 使うタイミングがわからない
関連記事
本の階段を登る男性
【エクセル マクロ/VBA】初心者が独学勉強するための本|おすすめ2冊を紹介

続きを見る

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」が入っていた場合は、メッセージボックスで「百」が表示されます。

Test1の実行結果のイメージ
Test1の実行結果

複数の条件を指定する場合

複数の条件を指定する場合は、条件の値を「 , 」で区切って指定します。

例:条件の値が「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」が表示されます。

Test2の実行結果(パターン1)
Test2の実行結果(70の場合)
Test2の実行結果(パターン2)
Test2の実行結果(100の場合)

連続した値を条件とする場合

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」が入っていた場合は、メッセージボックスで「三桁」が表示されます。

Test3の実行結果のイメージ
Test3の実行結果

文字列を条件とする場合

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の文字が赤色になります。

Test4の実行前のイメージ
Test4実行前
Test4の実行結果のイメージ
Test4の実行結果

注意事項

caution

条件にアルファベットを使用する際には注意が必要です。

なぜなら、アルファベットの大文字と小文字が区別されるからです。

条件の文字列を”Big”にしている場合、セルに”big”と入力してVBAを実行しても条件”Big”の処理は実行されません。

Select Caseステートメントのおさらい

importantの文字

今回は、複数の条件を同時に判定するSelect Caseステートメントの使い方について説明しました。

複数の条件を用いて処理が分岐されるような処理には、Select Caseステートメントを利用しましょう。

どのような条件を設定するかによって、上の4つのパターンを使い分けたり組み合わせたりするのがポイントです!

以上、「Select Caseステートメントの使い方|複数の条件を判定するVBA」をお伝えしました!

関連記事
本の階段を登る男性
【エクセル マクロ/VBA】初心者が独学勉強するための本|おすすめ2冊を紹介

続きを見る

-VBAコード解説