VBAでの条件分岐をシンプルに!Select Case文の使い方

Select Caseとは? VBA

VBAのIF分で複数条件分岐を行うと、コードが複雑になってよく分からなくなる。。。
そんな悩みを抱えていませんか?

お悩みpoint
悩む人
  • 複数の条件を扱う処理をIF文で書くと、コードが複雑になりがちで読みづらい。
  • もっとシンプルに条件分岐を管理できる方法はないの?
  • 数値や文字列の条件によって異なる処理を簡単に書ける方法を知りたい。

この記事では、VBAの Select Case 文を使ったシンプルでわかりやすい条件分岐の方法を解説します。

基本的な使い方から、実際の業務で役立つ応用例まで、初心者でもすぐに実践できる内容です。

ぜひ最後までお読みください。


【 この記事の概要 】

  よく使う度    2.5  
  難しさ     3.0  
  覚えておくと安心度    3.5  

この記事を見てできるようになること

この記事を読むことで、以下のことができるようになります。

この記事を見てできるようになること
  • VBAでSelect Case文を使って、複数の条件に応じた処理を簡潔に記述できるようになります。
  • 数値や文字列、範囲やパターンマッチングなど、様々な条件に応じた処理を効率よく行えるようになります。
  • IF文とSelect Case文の使い分けを理解し、適切な場面で条件分岐を適用できるようになります。

Select Case文とは?

VBAの Select Case 文は、複数の条件を整理して、簡潔に分岐処理を行うための構文です。

複数の条件を処理する際に、IF文で書くとどうしても冗長になりがちですが、Select Case文を使うことでコードの可読性を高め、スッキリと整理された条件分岐を記述することができます。

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文 は、複数の条件分岐を簡潔に書くことができ、コードの可読性が向上します。
  • 複数の条件 を1つのCaseでまとめて処理することができるので、効率的なコードが書けます。
  • 文字列の比較数値の範囲 を扱う場合にも、Select Case文は非常に便利です。
  • Like演算子 を使ったパターンマッチングにも対応でき、柔軟な条件分岐が可能です。

さらに学ぶために

Select Case文は、複数の条件分岐を簡潔に記述するための非常に強力なツールです。
特に、IF文では複雑になりがちなコードを整理するのに役立ちます。

さらに、Select Case文を応用することで、業務効率を高めるための柔軟なVBAプログラムを作成することができます。

また、IF文との使い分けを理解することで、より適材適所に条件分岐を適用できるようになります。
IF分については、別記事で解説していますので、そちらをご覧ください。

Select Case文を使いこなすことで、VBAでの条件分岐をより効率的に管理し、コードの可読性とメンテナンス性を向上させましょう。

タイトルとURLをコピーしました