【Excel VBA】Select Caseの使い方!IFの組み合わせも!

【Excel VBA】Select Caseの使い方!IFの組み合わせも!

Excel VBAでSelect Caseの使い方を知りたいときはないでしょうか。

けど、そんな中で悩むことは、

・Excel VBAでSelect Caseの使い方を知りたいがどこを調べていいかわからない
・Excel VBAでSelect CaseとIFを組み合わせる使い方を知りたいがわからない

ですよね。

今回はそんなお悩みを解決する

・Excel VBAでSelect Caseの使い方
・Excel VBAでSelect CaseとIFを組み合わせる使い方

についてまとめます!

Select Case文の構文

Select Case文の構文について説明をします。

Select Case文は、指定した式や変数の値と一致する条件を探し、該当するコードブロックを実行します。

Select Case 式または変数
Case 値1
‘ 値1に一致する場合のコード
Case 値2
‘ 値2に一致する場合のコード
Case Else
‘ いずれの値にも一致しない場合のコード
End Select

VBAでは、複数の条件に応じて異なるアクションを実行するために、「If Then Else」文を使用することが多いですが、
条件が多くなるとIf Then Else文での実装が複雑になりますね。

そのような場合に活用できるのがSelect Case文です。

Select Case文は、上記のように指定した変数の値に応じて異なる処理を行い、条件が多数ある場合にとても便利です。

Select Case文の使用例

では具体的に、Select Case文を使ったコードをみてみましょう。

ある人の年齢によって対応を変える場合を考えてみます。

以下のコードはA1セルの値が18より下だったら未成年、18から69までを成人、70歳以上を高齢者と出力する処理をおこなっています。

Sub 年齢判定()

    Dim Age As Integer
    Age = Range("A1").Value

    Select Case Age
    Case 0 To 17
        MsgBox "未成年"
    Case 18 To 69
        MsgBox "成人"
    Case Is >= 70
        MsgBox "高齢者"
    Case Else
        MsgBox "年齢が正しく入力されていません"
    End Select

End Sub

A1セルの値が2であれば未成年、
20であれば成人、
80であれば高齢者
という形でメッセージボックス上で表示されます。

なお、「Case Else」部分は任意であり、すべての条件を網羅している場合は記述する必要はありません。

Select Case文の条件式

上記の例以外にもSelect Case文の条件式で使えるパターンはいくつかありますので、説明をします。

1. 等しい条件

基本的な条件一致のパターンとなります。

   Select Case 変数
       Case "リンゴ"
           ' "リンゴ"の場合
       Case "バナナ"
           '  "バナナ"の場合
       Case Else
           ' 上記以外
   End Select

2. 範囲内であるかの条件

データの値がある範囲にあるかどうかを判定するパターンです。

   Select Case 変数
       Case 1 To 10
           '  1 to 10の範囲の場合
       Case 11 To 20
           ' 11 to 20の範囲の場合
       Case Else
           '上記以外
   End Select

3. 複数の値

カンマを使用して複数の値にマッチするか判定するパターンです。

   Select Case 変数
       Case "リンゴ", "バナナ", "イチゴ"
           ' "リンゴ", "バナナ", "イチゴ"が該当した場合
       Case Else
           ' 上記以外
   End Select

4. 真偽値(Boolean)

ブール値で判定するパターンです。

   Select Case 変数
       Case True
           ' 真の場合
       Case False
           '偽の場合
   End Select

上記のような使い方をすることで、複数の条件を簡潔に書くことができます。

ただし、Select Case文では複雑な条件式(例えば、複数の変数を含む比較や関数の結果を使用する条件など)は直接使用することができません。

そのような複雑な条件を表現するためには、If…Then…Else文を使用するか、あらかじめ条件式の結果を変数に格納してからSelect Case文で使用する必要があります。

Select Case文とIf文の組み合わせ

Select Case文とIf文を組み合わせることで、より柔軟な条件分岐を実現できます。

構文としては以下の通りです。

Select Case 式または変数
Case 値1
' 値1に一致する場合のコード
Case 値2
' 値2に一致する場合のコード
Case Else
If 条件 Then
' 条件が真の場合のコード
Else
' 条件が偽の場合のコード
End If
End Select

Select Case文の条件判定を優先して行い、さらに細かい判定を行いたい場合にIf文を使うイメージとなります。

Select Case文とIf文の組み合わせの使用例

Select Case文とIf文の組み合わせの使用例について説明をします。

A1セルが特定の値に一致する場合にはメッセージを表示し、
それ以外の場合にはさらなる条件判定を行い、別のメッセージを表示するコードとなります。

Sub 数値判定()

    Dim intNum As Integer
    intNum = Range("A1").Value

    Select Case intNum
        Case 1
            MsgBox "A1は1です。"
        Case 2
            MsgBox "A1は2です。"
        Case Else
            If intNum > 10 Then
                MsgBox "A1は10より大きいです。"
            Else
                MsgBox "A1は10以下です。"
            End If
    End Select

End Sub

上記のコードでは、A1セルの値が1の場合と2の場合にはそれぞれメッセージが表示され、
それ以外の場合にはA1セルの値に応じて別の条件分岐が行われます。

さいごに

いかがでしょうか。

今回は、

・Excel VBAでSelect Caseの使い方
・Excel VBAでSelect CaseとIFを組み合わせる使い方

についてまとめました。

Select Case文とIf文を組み合わせることで、より複雑な条件分岐を実現できます。

必要に応じて条件式やコードを適切に組み合わせて、プログラムのロジックを制御してください。

また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。








コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です