条件分岐の対応方法
条件分岐を行う場合、主に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
動作内容
さらに、変数と組み合わせて使うケースも多いため、条件分岐と変数の連携にも慣れていくことが重要です。
コメント