VBAのCaseで条件分岐を行う方法をわかりやすく解説

スポンサーリンク
スポンサーリンク

Caseの概要

複数の条件分岐を簡潔に記述 VBAの予約語

Case

概要 Case ステートメントは、VBAの Select Case 文の中で使用されるキーワードで、変数の値に応じて異なる処理を実行するために使用されます。複数の条件を簡潔に記述でき、If...ElseIf...Else の代わりとして便利です。

わかりやすく説明 変数の値ごとに異なる処理を実行するための条件分岐。

  • 変数の値に応じて処理を分岐させる。
  • If...ElseIf...Else よりも簡潔に記述できる。
  • Excel VBAでセルの値やユーザー入力を判定する際に便利。

Caseの基本的な使い方

以下の例では、Select Case を使って数値の評価を行います。

Sub CheckNumber()
    Dim num As Integer
    num = 2
    
    Select Case num
        Case 1
            MsgBox "数値は1です"
        Case 2
            MsgBox "数値は2です"
        Case 3
            MsgBox "数値は3です"
        Case Else
            MsgBox "その他の数値です"
    End Select
End Sub

解説:

  • Select Case num: 変数 num の値を判定する。
  • Case 1: num が 1 の場合の処理。
  • Case 2: num が 2 の場合の処理(この例では 2 なのでこのブロックが実行される)。
  • Case Else: どのCaseにも該当しない場合に実行される。

複数の値をCaseに指定する

カンマ(,)を使うことで、複数の値に対して同じ処理を適用できます。

Sub CheckMultipleValues()
    Dim num As Integer
    num = 5
    
    Select Case num
        Case 1, 3, 5, 7, 9
            MsgBox "奇数です"
        Case 2, 4, 6, 8, 10
            MsgBox "偶数です"
        Case Else
            MsgBox "1~10の範囲外です"
    End Select
End Sub

解説:

  • Case 1, 3, 5, 7, 9: これらの数値のいずれかの場合に「奇数です」と表示。
  • Case 2, 4, 6, 8, 10: これらの数値のいずれかの場合に「偶数です」と表示。

範囲を指定する

To を使うことで、数値の範囲を指定できます。

Sub CheckRange()
    Dim score As Integer
    score = 75
    
    Select Case score
        Case 90 To 100
            MsgBox "評価: A"
        Case 80 To 89
            MsgBox "評価: B"
        Case 70 To 79
            MsgBox "評価: C"
        Case Else
            MsgBox "評価: D"
    End Select
End Sub

解説:

  • Case 90 To 100: 90 以上 100 以下の場合。
  • Case 80 To 89: 80 以上 89 以下の場合。
  • Case Else: どの範囲にも該当しない場合の処理。

Excel VBAでのCaseの活用

Excelのセルの値を判定し、それに応じて処理を分岐させる例です。

Sub CheckCellValue()
    Dim cellValue As String
    cellValue = Range("A1").Value
    
    Select Case cellValue
        Case "OK"
            MsgBox "承認されました"
        Case "NG"
            MsgBox "却下されました"
        Case Else
            MsgBox "不明な値です"
    End Select
End Sub

解説:

  • セル A1 の値を取得し、Select Case で処理を分岐。
  • 値が「OK」の場合は「承認されました」と表示。
  • 値が「NG」の場合は「却下されました」と表示。

Case Is を使った条件指定

Case Is を使うと、比較演算子を用いた条件指定ができます。

Sub CheckComparison()
    Dim num As Integer
    num = 45
    
    Select Case num
        Case Is < 30
            MsgBox "30未満です"
        Case Is >= 30 And Is < 60
            MsgBox "30以上60未満です"
        Case Else
            MsgBox "60以上です"
    End Select
End Sub

解説:

  • Case Is < 30: 30未満の場合。
  • Case Is >= 30 And Is < 60: 30以上60未満の場合。

注意点

  • 数値だけでなく文字列も判定可能: 文字列の比較にも使用できる。
  • If…ElseIf とどちらを使うか検討: 条件が単純な場合は Select Case を使うとコードが簡潔になる。
  • 範囲指定の順序に注意: Case 90 To 100 のように範囲を指定する際、誤った順序にするとエラーになる可能性がある。

まとめ

  • Case は Select Case 文の中で条件分岐を定義するために使用される。
  • 数値や文字列の比較を簡潔に記述できる。
  • Excel VBAでは、セルの値を判定する際にも利用可能。
  • 範囲指定(To)や条件式(Case Is)を使って柔軟な比較ができる。