【Excelマクロ】条件分岐 Case

Excelマクロ

条件分岐の対応方法

条件分岐を行う場合、主に2つの方法があります。

「If」を使う方法と、「Select Case」を使う方法です。

Ifは基本的に2つ程度の分岐をスムーズに行う場合に適しており、Select Caseは複数の分岐を効率よく処理する場合に適しています。

例えば、タスクの優先度に応じて、その行の色を変更するマクロを考えてみましょう。

最優先:赤色
優先:橙色
通常:黄色
余裕あり:水色

このようなタスク管理を行う場合、実際のVBAコードはSelect Caseを使って説明をしていきますが、基本的な構造としては次のとおりです。

Select Caseの基本構造

Select Case 確認する値

    Case 条件1
        実行する動作1

    Case 条件2
        実行する動作2

    Case 条件3
        実行する動作3

    (このように続けていく)

End Select

「Select Case」から初めて「End Select」で終了します。

この間に条件をいくつか記載し、Select Caseの横に書いた確認する値がどのようになっているかにより、処理を分けるのが、このコードの特徴です。

具体例

文章だけではわかりづらいので、先ほどの例を実際のコードに起こしていきます。

A1セルの値に応じて背景色を変更する場合を考えます。

Select Case Cells(1, 1).Value

    Case "最優先"
        Cells(1, 1).Interior.Color = RGB(255, 0, 0) ' 赤色

    Case "優先"
        Cells(1, 1).Interior.Color = RGB(237, 125, 49) ' 橙色

    Case "通常"
        Cells(1, 1).Interior.Color = RGB(255, 255, 0) ' 黄色

    Case "余裕あり"
        Cells(1, 1).Interior.Color = RGB(173, 216, 230) ' 水色

End Select

このコードでは、Select Caseの右側に書かれた「確認する値」は「Cells(1,1).Value」となっているので、「A2の値」に基づいて、条件ごとに処理を分けています。

それぞれのCase の横に書いているのが、「A2の値がどうなっているか?」なので、「最優先」「優先」「通常」「余裕あり」のそれぞれの条件に該当する内容が実行される仕組みです。

そのため、このように指定したもの(確認する値)が何かにより、動作を変更するのが、Select Caseの基本的な使い方です。

Case Elseについて

もし、どの条件にも当てはまらない場合に「何も実行しない」なら特に記述は必要ありませんが、どれにも該当しなかった場合に、何か設定をする場合には「Case Else」を使います。

使い方はシンプルで、Caseの後にElse(上記以外の場合)のように書きます。

Case Else
    実行したい内容

まとめ

条件分岐は、単純な条件であれば「If」を使用するのが便利ですが、複数の条件を効率よく処理したい場合には「Select Case」を使用するのが一般的です。

今回はそれぞれ1つの条件としましたが、次のような指定も可能です。

  • 範囲指定
    Case 1 To 10
      動作内容1
    Case 11 To 20
      動作内容2
  • 複数条件の指定
    Case 1, 3, 5
      動作内容

さらに、変数と組み合わせて使うケースも多いため、条件分岐と変数の連携にも慣れていくことが重要です。

コメント