VBAのIF分で複数条件分岐を行うと、コードが複雑になってよく分からなくなる。。。
そんな悩みを抱えていませんか?
この記事では、VBAの Select Case 文を使ったシンプルでわかりやすい条件分岐の方法を解説します。
基本的な使い方から、実際の業務で役立つ応用例まで、初心者でもすぐに実践できる内容です。
ぜひ最後までお読みください。
【 この記事の概要 】
よく使う度 | |
難しさ | |
覚えておくと安心度 |
この記事を見てできるようになること
この記事を読むことで、以下のことができるようになります。
Select Case文とは?
VBAの Select Case 文は、複数の条件を整理して、簡潔に分岐処理を行うための構文です。
複数の条件を処理する際に、IF文で書くとどうしても冗長になりがちですが、Select Case文を使うことでコードの可読性を高め、スッキリと整理された条件分岐を記述することができます。
Select Case文の基本構成
Select Case文の基本構成は以下の通りです。
この構成では、評価する値 に基づいて、条件1 または 条件2 に一致する場合の処理が実行されます。
どの条件にも一致しない場合は、Case Else の処理が実行されます。
より詳しい情報は、Microsoft公式 – Select Case ステートメントを参照してみてください。
Select Case文の使用例
それでは、Select Case文の具体的な使用例を見ていきましょう。
使用例1:比較演算子を使用した数値の条件分岐
ある数値以上かどうか を条件として判定する方法を紹介します。
比較演算子を使用する場合は、「Case Is >= 90」のように、「Is」が必要になります。
次の例は、セルA1に入力された点数に応じて成績評価を表示するコードです。
Sub CheckGrade()
Dim score As Long
score = Range("A1").Value
Select Case score
Case Is >= 90
MsgBox "成績はAです"
Case Is >= 80
MsgBox "成績はBです"
Case Is >= 70
MsgBox "成績はCです"
Case Else
MsgBox "成績はDです"
End Select
End Sub
このコードでは、セルA1の値が90以上であれば「成績はAです」と表示され、80以上90未満の場合は「成績はBです」と表示されます。
70以上80未満の場合は「成績はCです」、それ未満の場合は「成績はDです」と表示されます。
比較演算子の一覧について
比較演算子の一覧については、以下を参照ください。
比較演算子 | 説明 | 使用例 |
---|---|---|
= | 等しい | Case Is = 10 |
<> | 等しくない | Case Is <> 10 |
< | 小さい | Case Is < 10 |
> | 大きい | Case Is > 10 |
<= | 小さいか等しい | Case Is <= 10 |
>= | 大きいか等しい | Case Is >= 10 |
Like | 文字列が特定のパターンに一致するか | Case “A*” |
To | 範囲指定 | Case 1 To 10 |
使用例2:特定の数値に基づく条件分岐
この例では、特定の数値 に基づいて処理を分岐する方法を紹介します。
以下のコードでは、セルA1に入力された数値が奇数か偶数かを判定してメッセージを表示します。
Sub CheckOddOrEven()
Dim number As Long
number = Range("A1").Value
Select Case number
Case 1, 3, 5, 7, 9
MsgBox "奇数です"
Case 2, 4, 6, 8
MsgBox "偶数です"
Case Else
MsgBox "1から9の間の数ではありません"
End Select
End Sub
このコードでは、Case 1, 3, 5, 7, 9 のように複数の数値を指定して、奇数と偶数で条件分岐しています。
1から9の間に含まれない値の場合は「1から9の間の数ではありません」と表示されます。
使用例3:文字列を条件として処理を分岐
この例では、特定の文字列 に基づいて処理を分岐する方法を紹介します。
以下のコードでは、セルA1に入力された名前に応じて、異なるメッセージを表示します。
Sub GreetUser()
Dim userName As String
userName = Range("A1").Value
Select Case userName
Case "山田"
MsgBox "こんにちは、山田さん"
Case "鈴木"
MsgBox "こんにちは、鈴木さん"
Case Else
MsgBox "こんにちは、ゲストさん"
End Select
End Sub
このコードでは、セルA1に「山田」と入力されている場合に「こんにちは、山田さん」と表示され、「鈴木」と入力されている場合には「こんにちは、鈴木さん」と表示されます。
それ以外の場合には「こんにちは、ゲストさん」と表示されます。
使用例4:数値の範囲を条件にした処理分岐
この例では、数値の範囲 に基づいて処理を分岐する方法を紹介します。
数値の範囲を指定する場合は、「Case 1 To 10」のように、「To」が必要になります。
以下のコードでは、セルA1に入力された数値がどの範囲に属するかを判定してメッセージを表示します。
Sub EvaluateRange()
Dim value As Long
value = Range("A1").value
Select Case value
Case 1 To 10
MsgBox "1から10の間の数です"
Case 11 To 20
MsgBox "11から20の間の数です"
Case Else
MsgBox "範囲外の数です"
End Select
End Sub
このコードでは、セルA1の値が1から10の間であれば「1から10の間の数です」と表示され、11から20の間であれば「11から20の間の数です」と表示されます。
それ以外の数値の場合は「範囲外の数です」と表示されます。
使用例5:文字列のパターンマッチングに基づく条件分岐
最後に、Like演算子を使って文字列のパターンに基づく 条件分岐の例です。
Like演算子を使うことで、文字列が特定のパターンに一致するかどうかを判定できます。
また、Like演算子を使用する場合は、ワイルドカードを使ってパターンマッチングを行うことができます。
Sub CheckPattern()
Dim text As String
text = Range("A1").value
Select Case True
Case text Like "A####"
MsgBox "A1は'A'で始まり、続く4文字が数字です"
Case text Like "B*"
MsgBox "A1は'B'で始まる文字列です"
Case Else
MsgBox "A1の値は指定のパターンと一致しません"
End Select
End Sub
このコードでは、セルA1の値が「A」で始まり、続く4文字が数字であれば「A1は’A’で始まり、続く4文字が数字です」と表示されます。
「B」で始まる文字列であれば「A1は’B’で始まる文字列です」と表示され、それ以外の場合は「A1の値は指定のパターンと一致しません」と表示されます。
ワイルドカードについて
ワイルドカードの一覧は下記の通りとなります。
ワイルドカード | 説明 |
---|---|
# (シャープ) | 任意の1桁の数字に一致します。 |
* (アスタリスク) | 0文字以上の任意の文字列に一致します。 |
? (クエスチョンマーク) | 任意の1文字に一致します。 |
まとめ
ポイントのおさらい
さらに学ぶために
Select Case文は、複数の条件分岐を簡潔に記述するための非常に強力なツールです。
特に、IF文では複雑になりがちなコードを整理するのに役立ちます。
さらに、Select Case文を応用することで、業務効率を高めるための柔軟なVBAプログラムを作成することができます。
また、IF文との使い分けを理解することで、より適材適所に条件分岐を適用できるようになります。
IF分については、別記事で解説していますので、そちらをご覧ください。
Select Case文を使いこなすことで、VBAでの条件分岐をより効率的に管理し、コードの可読性とメンテナンス性を向上させましょう。