【Excel VBA入門】条件分岐処理|Select Case

記述編

Select Case … 場合を選択?

直訳すれば「場合を選択」となるかと思いますが、プログラミングではどういった意味でつかわれているのでしょうか?

VBAでの具体的な「Select Case」の使い方をご紹介いたします。

条件分岐処理とは

こちらは条件によって次の処理を分けたいときに使います。

おなじ条件分岐処理をおこなう「If ~ Then」でご紹介いたしましたが、ご存じでなければあわせてご確認ください。

Select Caseの使い方

条件分岐が必要なときにつかいます。

指定する条件によって、「実行する」「実行しない」の選択をさせたいときです。

さっそく具体的なコードを使ってご説明します。

こちらが記述したい内容です。

【スタート】マクロの名前:select_case
    (条件分岐の開始)もしセルA1が
        5以上ならば
            セルB1に”★★★★★”を代入する
        4以上ならば
            セルB1に”★★★★☆”を代入する
        3以上ならば
            セルB1に”★★★☆☆”を代入する
        2以上ならば
            セルB1に”★★☆☆☆”を代入する
        1以上ならば
            セルB1に”★☆☆☆☆”を代入する
        どれにも該当しないならば
            メッセージの表示 ”セルA1に「1~5以上」を入力してください。”
    (条件分岐の終了)
【ゴール】

こちらがコードの内容です。

Sub select_case()
    Select Case Range("A1").Value
        Case Is >= 5
            Range("B1").Value = "★★★★★"
        Case Is >= 4
            Range("B1").Value = "★★★★☆"
        Case Is >= 3
            Range("B1").Value = "★★★☆☆"
        Case Is >= 2
            Range("B1").Value = "★★☆☆☆"
        Case Is >= 1
            Range("B1").Value = "★☆☆☆☆"
        Case Else
            MsgBox ("セルA1に1~5以上を入力してください。")
    End Select
End Sub

コードのポイントについて解説をします。

Select Case (比較したい対象を記述)
    Case Is (対象の条件を記述)
        (条件を満たした場合の処理を記述)
    Case Else
        (どの条件も満たさない場合の処理を記述)
End Select

プログラムは「上から順番に実行」されるため数値で条件設定をする場合は、降順」もしくは「昇順で指定しましょう。

比較|「If ~ Then」と「Select Case」

では、どうして「If ~ Then」と同じような意味をもつ「Select Case」が用意されているのでしょうか?

それはコードがシンプルで「人間が読みやすいから」です。

条件分岐処理をしたいとき、「If ~ Then」をつかっても同じ結果を得られます。

個人的に条件設定を細かく記述できる「If ~ Then」の方をおススメしています。慣れてきたら「Select Case」もつかってみる!のような感じでいいと思います。

Select Case」よりも「If ~ Then」のほうが柔軟性がある。特にこだわりもなく2つで迷ったら「If ~ Then」を使うようにする。

まとめ

条件分岐処理「Select Case」の使い方についてご説明をいたしました。

If ~ Then」とおなじで条件によって処理を分岐させたいときに使用します。

もし「If ~ Then」とどちらを優先すればいいかお悩みであれば、「Select Case」よりも「If ~ Then」から慣れていただいた方が良いかと思います。