VBAの Select Case
文は、特定の値ごとに異なる処理を実行するのに便利ですが、範囲を指定することでより柔軟な条件分岐が可能 になります。本記事では、範囲を指定する Select Case
文の応用テクニックを紹介します。
目次
1. Select Caseで範囲を指定する基本
Select Case
文では、Case
の後に 数値の範囲 を指定できます。
(1) 範囲指定の基本
Select Case 評価対象
Case 最小値 To 最大値
'条件に一致したときの処理
End Select
ポイント
Case 10 To 20
のようにTo
を使うと、10以上20以下の範囲を指定できる- To の範囲は「以上・以下」(10 <= x <= 20)
Case Else
を使えば、範囲外の値に対する処理も可能
2. 数値の範囲を使った応用例
(1) 成績評価の自動判定
例えば、テストの点数に応じて成績を判定する場合:
Sub CheckGrade()
Dim score As Integer
score = Range("A1").Value 'A1の値を取得
Select Case score
Case 90 To 100
MsgBox "評価: A"
Case 80 To 89
MsgBox "評価: B"
Case 70 To 79
MsgBox "評価: C"
Case 60 To 69
MsgBox "評価: D"
Case Is < 60
MsgBox "評価: F(不合格)"
Case Else
MsgBox "無効な点数です"
End Select
End Sub
ポイント
Case 90 To 100
で 90点以上100点以下 を指定Case Is < 60
で 60未満 を指定(Is
を使う)Case Else
で 無効な値(0未満や100超え) に対応
3. 複数条件を組み合わせる
(1) 数値の範囲 + 特定の値
Sub CheckScoreAdvanced()
Dim score As Integer
score = Range("A1").Value
Select Case score
Case 100
MsgBox "満点!素晴らしい!"
Case 90 To 99
MsgBox "評価: A"
Case 80, 85 To 89
MsgBox "評価: B(80点か85〜89点)"
Case 70 To 79
MsgBox "評価: C"
Case Else
MsgBox "その他の点数"
End Select
End Sub
ポイント
Case 100
で 特定の値 を指定Case 80, 85 To 89
のように、個別の値と範囲を組み合わせ られる
4. 文字列の範囲を使った応用
(1) アルファベットの範囲を判定
Sub CheckAlphabet()
Dim letter As String
letter = LCase(Range("A1").Value) '小文字に変換
Select Case letter
Case "a" To "m"
MsgBox "前半のアルファベット"
Case "n" To "z"
MsgBox "後半のアルファベット"
Case Else
MsgBox "アルファベット以外の文字"
End Select
End Sub
ポイント
- 文字列の比較も
To
が使える "a" To "m"
で A〜Mの範囲、"n" To "z"
で N〜Zの範囲 を指定LCase()
を使うことで 大文字・小文字の区別をなくす
5. 日付の範囲を判定
(1) 日付の範囲を使った処理
Sub CheckDate()
Dim checkDate As Date
checkDate = Range("A1").Value
Select Case checkDate
Case #2025/01/01# To #2025/03/31#
MsgBox "第1四半期"
Case #2025/04/01# To #2025/06/30#
MsgBox "第2四半期"
Case #2025/07/01# To #2025/09/30#
MsgBox "第3四半期"
Case #2025/10/01# To #2025/12/31#
MsgBox "第4四半期"
Case Else
MsgBox "日付が範囲外です"
End Select
End Sub
ポイント
#日付#
の形式で範囲を指定できるCase #2025/01/01# To #2025/03/31#
で 特定の期間 を判定
6. ToとIsを組み合わせる
Case Is
を使うことで、より複雑な条件を指定できます。
(1) 数値の範囲 + より大きい・小さいを組み合わせる
Sub CheckComplexRange()
Dim num As Integer
num = Range("A1").Value
Select Case num
Case Is < 0
MsgBox "負の数"
Case 0
MsgBox "ゼロ"
Case 1 To 50
MsgBox "1から50の範囲"
Case Is > 50
MsgBox "50より大きい"
Case Else
MsgBox "不明な値"
End Select
End Sub
ポイント
Case Is < 0
で 0未満 の値を判定Case 1 To 50
で 1〜50の範囲Case Is > 50
で 50より大きい数
7. まとめ
応用テクニック | 使い方のポイント |
---|---|
数値の範囲 | Case 10 To 20 で10以上20以下を指定 |
複数条件の組み合わせ | Case 80, 85 To 89 のように指定可能 |
文字列の範囲 | "a" To "m" のようにアルファベットの範囲を指定 |
日付の範囲 | Case #2025/01/01# To #2025/03/31# で特定の期間を指定 |
Isとの併用 | Case Is < 0 や Case Is > 50 で範囲外の値を指定 |
Select Case
文を活用すると、可読性を保ちながら範囲を指定した条件分岐 を記述できます。ぜひ、実際のVBAプログラムに応用してみてください!
コメント