Select Case

今回の目標

  • Select Caseについて理解を深める
  • [Is 比較演算子]や[To]を用いて条件分岐の処理をできるようになる
  • 説明

    事前準備

    事前準備として、セルA1に[10]を入力してください。
    今回はこのセルA1を用いて説明します。

    特定条件時のみ実行する(Select Case / End Select) 

    基本構文です。

    Select Case 比較対象
        Case Is 条件①
            比較対象と条件①を比較し、真の時に行う処理
    End Select
    

    条件には、比較対象の変数やセルを記載する必要がありません。

    下記サンプルは、セルA1が10の時にセルB1に「セルA1の値は10です。」と記入するプログラムです。

    Sub Sample_SelectCase1()
        Select Case Cells(1, 1)
            Case Is = 10
                Cells(1, 2) = "セルA1の値は10です。"
        End Select
    End Sub
    

    上記サンプルの通り、Select Case文では「Case Is = 10」と記載します。

    サンプルでは「=」でしたが、各比較演算子(<, <=, >, >=)を用いて比較することができます。

    If文と同様に「条件①に一致しないかつ、条件②に一致する」場合の処理も可能です。
    2つ目の条件を記載する時は、「Case 条件②」と記載します。

    Sub Sample_SelectCase2()
        Select Case Cells(1, 1)
            Case Is = 10
                Cells(1, 2) = "セルA1の値は10です。"
            Case Is < 10
                Cells(1, 2) = "セルA1の値は10未満です。"
        End Select
    End Sub
    

    「一致しているか」を確認するときに「=」を使用しますが、この時の「Case Is = 値」は「Case 値」と省略することができます

    Sub Sample_SelectCase3()
        Select Case Cells(1, 1)
            Case 10     ' ←「Case Is = 10」と同義
                Cells(1, 2) = "セルA1の値は10です。"
            Case 20     ' ←「Case Is = 20」と同義
                Cells(1, 2) = "セルA1の値は20です。"
        End Select
    End Sub
    

    特定条件時でない場合のみ実行する (Case Else)

    条件①、条件②・・・と比較し、それら全てに一致しなかった場合の命令です。
    基本構文です。

    Select Case 比較対象
        Case Is 条件①
            比較対象と条件①を比較し、真の時に行う処理
        ・・・
        Case Else
            比較対象と条件①、条件②・・・を比較し、全条件が偽の時に行う処理
    End Select
    

    サンプルです。

    Sub Sample_SelectCase4()
        Select Case Cells(1, 1)
            Case Is = 10
                Cells(1, 2) = "セルA1の値は10です。"
            Case 20     ' ←「Case Is = 20」と同義
                Cells(1, 2) = "セルA1の値は20です。"
            Case Else
                Cells(1, 2) = "セルA1の値は10でも20でもありません。"
        End Select
    End Sub
    

    10以上20以下(Case A To B)

    「10以上20以下」等の数値の範囲を指定するとき、If文では「And」を使用する等の工夫が必要でした。しかし、Select Caseではもっとシンプルに書けます。
    基本構文です。

    Select Case 比較対象
        Case 最低値 To 最大値
            比較対象と数値の範囲内なら行う処理
    End Select
    

    このようにCase 最低値 To 最大値と記載すると最低値から最大値の場合の処理を書けます。

    サンプルです。

    Sub Sample_SelectCase5()
        Select Case Cells(1, 1)
            Case 0 To 30
                Cells(1, 2) = "赤点です"
        End Select
    End Sub
    

    Elseを使用して処理を書くこともできます。

    Sub Sample_SelectCase6()
        Select Case Cells(1, 1)
            Case 0 To 30
                Cells(1, 2) = "赤点です"
            Case 31 To 100
                Cells(1, 2) = "合格点です"
            Case Else
                Cells(1, 2) = "不正な値:点数を確認して下さい"
        End Select
    End Sub
    

    10または20(Case A, B)

    「10または20」等のどちらかが一致しているときの処理を書くとき、If文では「Or」を使用ました。Select Caseではシンプルに書けます。
    基本構文です。

    Select Case 比較対象
        Case 条件①, 条件②
            比較対象と条件①,条件②を比較し、どちらかが真の時に行う処理
    End Select
    

    1つ目の条件の後に[,](半角カンマ)を書き、続けて2つ目の条件書くと、どちらかが一致したときの処理になります。

    サンプルです。

    Sub Sample_SelectCase7()
        Select Case Cells(1, 1)
            Case 10, 20
                Cells(1, 2) = "10か20です"
            Case Else
                Cells(1, 2) = "10か20以外です"
        End Select
    End Sub
    

    【番外編】xより大きいかつy未満

    最初にお伝えしたいのは、x以上かつy未満や、xより大きいかつy以下、xより大きいかつy未満といった、範囲の指定で条件に「より大きい」か「未満」を指定する場合はIf文を使用してください
    読み飛ばして、確認テストを行っても問題ありません。 Select Case文でも可能なので説明しますが、一般的でないためです。

    xより大きいかy未満を使用する場合は「To」を使用することはできません。
    「To」は『x以上かつy未満』だからです。Andを用いて自力で条件に一致しているか確認する必要があります。

    Select Case True
        Case 条件① And 条件②
            条件①と条件②が共に真の時に行う処理
    End Select
    

    サンプルです。

    'セルA1が10以上かつ20未満の時に処理
    Sub Sample_SelectCase7()
        Select Case True
            Case 10 <= Cells(1, 1) And Cells(1, 1) < 20
                Cells(1, 2) = "セルA1は10以上かつ20未満です"
        End Select
    End Sub
    

    確認テスト

    次の問いに答えなさい。

    1. セルB1の値を基準にセルC1に次の条件で入力しなさい。
      • セルB1が"田中"の時、セルC1に"合格"と入力
    2. セルB2の値を基準にセルC2に次の条件で入力しなさい。
      • セルB2が29より大きい時、セルC2に"合格"と入力
      • セルB2がそれ以外の時、セルC2に"不合格"と入力
    3. セルB3の値を基準にセルC3に次の条件で入力しなさい。
      なお、セルB3は必ず0以上100以下の整数が入力されるとする。
      • セルB3が30以下の時、セルB3に"不合格"と入力
      • セルB3が100の時、セルB3に"満点合格"と入力
      • セルB3がそれ以外の時、セルC3に"合格"と入力
    4. セルB4の値を基準にセルC4に次の条件で入力しなさい。
      • セルB4が0以上29以下の時、セルC4に"不可"と入力
      • セルB4が30以上54以下の時、セルC4に"可"と入力
      • セルB4が55以上74以下の時、セルC4に"良"と入力
      • セルB4が75以上100以下の時、セルC4に"優"と入力
      • セルB4がそれ以外の時、セルC4に"採点ミス"と入力
    5. セルB5の値を基準にセルC5に次の条件で入力しなさい。
      • セルB5が"阿部"か"伊澤"の時、セルC5に"合格"と入力
    解答1 解答2 解答3 解答4 解答5

    関連リンク

    次ページ:反復処理とは

    前ページ:If構文

    関連ページ1:条件分岐とは

    関連ページ2:比較と真偽

    ページの先頭へ