【VBAスタンダード対策】Select Caseによる「複数値のカンマ指定」を攻略!
Select Case では、連続した範囲(To)だけでなく、「1または5」「2または6」のように、離れた複数の値を指定することも可能です。その際の正しい記述文法と判定の仕組みを押さえましょう。
1. 問題:カンマ区切りによる複数値の判定
【 問題 】 下記のコードを実行して CheckGroup(5) を呼び出した際、メッセージボックスに表示される文字列として正しいものはどれでしょうか?
Sub Test()
Call CheckGroup(5)
End Sub
Sub CheckGroup(num As Integer)
Select Case num
Case 1, 5
MsgBox "グループA"
Case 2, 6
MsgBox "グループB"
Case Else
MsgBox "その他"
End Select
End Sub
Call CheckGroup(5)
End Sub
Sub CheckGroup(num As Integer)
Select Case num
Case 1, 5
MsgBox "グループA"
Case 2, 6
MsgBox "グループB"
Case Else
MsgBox "その他"
End Select
End Sub
① 「その他」が表示される
② 「グループA」が表示される
③ 「グループB」が表示される
④ 構文エラー(コンパイルエラー)が発生する
2. 正解:複数値指定の判定に関する正解
正解: ② 「グループA」が表示される
3. 解説:カンマは「または(Or)」の構造を持つ
特定の値を複数ピックアップして条件分岐させたい場合、VBAでは非常にシンプルな記述構造が用意されています。
[ 複数値指定の構造ルール ]
1. カンマは「Or」の意味になる
2. 「To」との違いを意識する
もし
3. 「To」と「カンマ」の組み合わせも可能
応用として、
1. カンマは「Or」の意味になる
Case 1, 5 と書くと、内部的には「対象の変数が 1 または 5 の場合」という Or 条件の構造になります。今回引数に渡されたのは「5」なので、見事に条件に合致し、グループAが実行されます。2. 「To」との違いを意識する
もし
Case 1 To 5 と書いた場合は「1, 2, 3, 4, 5」のすべてが対象になりますが、Case 1, 5 であれば「1」と「5」のピンポイントな2つの値だけが対象になります。3. 「To」と「カンマ」の組み合わせも可能
応用として、
Case 1 To 3, 5(1〜3、または5)のように、範囲指定と個別指定をカンマで繋ぐ高度な構造もVBAでは認められています。ここが試験に出る!: スタンダード試験では、If文の If num = 1 Or num = 5 Then という長くなりがちなコードを、Select Case を使ってスッキリ書き直す問題が出題されます。カンマの前後で条件が「いずれかに一致(Or)」の構造になっているかを冷静に見極めましょう。
4. まとめ
「離れた値はカンマで繋ぐ。それはOrのメッセージ」。このシンプルな文法構造をマスターすれば、不規則に並ぶ特定データの仕分け処理も迷わずスマートに記述できます。If文のOr連打から卒業し、見やすいコードを心がけましょう。
PR