Select Case
今回の目標
説明
事前準備
事前準備として、セル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
確認テスト
次の問いに答えなさい。
- セルB1の値を基準にセルC1に次の条件で入力しなさい。
- セルB1が"田中"の時、セルC1に"合格"と入力
- セルB2の値を基準にセルC2に次の条件で入力しなさい。
- セルB2が29より大きい時、セルC2に"合格"と入力
- セルB2がそれ以外の時、セルC2に"不合格"と入力
- セルB3の値を基準にセルC3に次の条件で入力しなさい。
なお、セルB3は必ず0以上100以下の整数が入力されるとする。 - セルB3が30以下の時、セルB3に"不合格"と入力
- セルB3が100の時、セルB3に"満点合格"と入力
- セルB3がそれ以外の時、セルC3に"合格"と入力
- セルB4の値を基準にセルC4に次の条件で入力しなさい。
- セルB4が0以上29以下の時、セルC4に"不可"と入力
- セルB4が30以上54以下の時、セルC4に"可"と入力
- セルB4が55以上74以下の時、セルC4に"良"と入力
- セルB4が75以上100以下の時、セルC4に"優"と入力
- セルB4がそれ以外の時、セルC4に"採点ミス"と入力
- セルB5の値を基準にセルC5に次の条件で入力しなさい。
- セルB5が"阿部"か"伊澤"の時、セルC5に"合格"と入力