教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA 構文】Select Case文(条件分岐)の使い方を教えて!

構文

構文は以下の通りです。

Select Case 式
    Case 条件1
        ' 条件1が成立する場合の処理
    Case 条件2
        ' 条件2が成立する場合の処理
    Case Else
        ' どの条件にも該当しない場合の処理
End Select

解説

Select Case文は、複数の条件を評価し、それに応じて処理を実行するための制御文です。Select Case文の構文は、Select Case~End Selectまでの範囲内に複数のCase文を記述します。最初に指定した式の値が、各Case文の条件と一致するかどうかを順番に評価し、条件に合致した場合の処理が実行されます。Case Elseは、どの条件にも該当しない場合の処理を記述するための部分です。

使い方

以下では、具体的な使い方の例をいくつか紹介します。

1.数値の評価

例えば、あるセルの値に応じて成績を評価し、結果に応じてメッセージを表示する場合を紹介します。

Sub EvaluateGrade()
    Dim score As Integer
    score = Range("A1").Value
    Select Case score
        Case Is >= 90
            MsgBox "成績は優秀です。"
        Case 70 To 89
            MsgBox "成績は良好です。"
        Case 50 To 69
            MsgBox "成績は可です。"
        Case Else
            MsgBox "成績は不可です。"
    End Select
End Sub

この例では、セルA1の値に応じて成績を評価しています。評価基準は、90以上であれば「優秀」、70から89までであれば「良好」、50から69までであれば「可」となります。それ以外の場合は「不可」となります。

2.文字列の評価

例えば、あるセルの値に応じて果物の種類を判定し、結果に応じてメッセージを表示する場合を紹介します。

Sub EvaluateFruit()
    Dim fruit As String
    fruit = Range("A1").Value
    Select Case fruit
        Case "Apple"
            MsgBox "りんごです。"
        Case "Banana"
            MsgBox "バナナです。"
        Case "Orange"
            MsgBox "オレンジです。"
        Case Else
            MsgBox "その他の果物です。"
    End Select
End Sub

この例では、セルA1の値に応じて果物の種類を判定しています。セルの値が"Apple"の場合は「りんご」、"Banana"の場合は「バナナ」、"Orange"の場合は「オレンジ」と表示されます。それ以外の場合は「その他の果物」と表示されます。

3.複数の条件の組み合わせ

例えば、あるセルの値が特定の範囲内にあるかどうかを判定し、結果に応じてメッセージを表示する場合を紹介します。

Sub MultipleConditions()
    Dim value As Integer
    value = Range("A1").Value
    Select Case value
        Case 1 To 10, 20 To 30
            MsgBox "値は1から10の範囲内または20から30の範囲内です。"
        Case 11 To 19
            MsgBox "値は11から19の範囲内です。"
        Case Else
            MsgBox "その他の値です。"
    End Select
End Sub

この例では、セルA1の値が1から10の範囲内または20から30の範囲内にあるか、11から19の範囲内にあるかを判定しています。該当する範囲に値が存在する場合はそのメッセージが表示され、それ以外の場合は「その他の値」と表示されます。

まとめ

Select Case文は、複数の条件を評価して処理を分岐させるための便利な機能であり、数値や文字列の評価、複数の条件の組み合わせなど様々な場面で活用できます。また、条件式に変数や関数を使用することも可能で、任意の式を記述することができるため、柔軟な条件判定が可能です。条件式には比較演算子や論理演算子を組み合わせて使うこともできます。さらに、Case文の条件として、範囲や複数の値を指定することもできます。複数の条件をまとめて処理したい場合や、特定の範囲内に該当する場合などに活用できます。