条件分岐で処理を実行させるには、If~Thenステートメント以外にもSelect Caseステートメントがあります。
Select Caseステートメントは、If~Thenステートメントと同じ動作をするものですが、記述が簡潔になるメリットがあります。
Select Case の記述方法
Select Case 条件判断の対象
Case 条件式1
対象が条件式1を満たすときの処理
Case 条件式2
対象が条件式2を満たすときの処理
・・・
Case Else
対象がすべての条件を満たさないときの処理
End Select
ようするに、「条件判断の対象」が条件式1を満たすとき⇒処理1、条件式2を満たすとき⇒処理2というものですが、百聞は一見に如かずです。
実際のコードを見てみましょう。
Select Caseステートメントを使用したVBAコード例
佐藤太郎君の得点は、下の表のようになっています。
この得点の数字の文字色を得点に応じて以下のように条件分岐処理をさせてみます。
- 100点より大きければ、得点の文字色を赤色
- 85点より大きければ、得点の文字色を緑色
- 70点より大きければ、得点の文字色を青色
VBAコードを見る前に、一つ説明をします。
Select Case ステートメントでは、条件式で「Is(アルファベットのアイ・エスです。エル・エスではありません。)」という文字が出てきます。
今回のVBAコードでは、「条件判断の対象」を、変数「Tokuten」(得点)として条件分岐させていますが、条件式で比較演算をする場合には「Tokuten」という文字を使用せずに「Is」を使用します。
具体的には、下のVBAコードの7行目では、「Select Case Tokuten」として、条件判断の対象を「Tokuten」に設定していますが、9行目・12行目では「Tokuten>数値」とせずに「Is>数値」と記述することになります。
※「Is」は、比較する場合に使用する演算式です。
Sub 複数の条件分岐での処理()
Dim Tokuten As Long
Tokuten = Cells(3, 3).Value '変数 Tokuten にセルC3の値を格納
Select Case Tokuten '条件判断の対象は、Tokuten
Case Is > 100 'Tokuten > 100 を満たすとき、、、
Cells(3, 3).Font.ColorIndex = 3 'セルC3の文字色を赤色に設定する
Case Is > 85 'Tokuten > 85 を満たすとき、、、
Cells(3, 3).Font.ColorIndex = 4 'セルC3の文字色を緑色に設定する
Case Is > 70 'Tokuten > 70 を満たすとき、、、
Cells(3, 3).Font.ColorIndex = 5 'セルC3の文字色を青色に設定する
End Select 'Select Case文の終わり
End Sub
実行すると、文字色が青色になります。
「Select Case」と「If~Then」のどちらを使うべきか?
Select Caseステートメントを使った場合とIf~Thenステートメントを使った場合、結果的にどちらも同じ動作をします。
どちらを使うべきかということに正解はありません。
ですが、コードはわかりやすく(見やすく)記述することが鉄則です。
したがって、Select Caseステートメントを使って見やすくなる場合はSelect Caseステートメントを使い、If~Thenステートメントを使って見やすくなる場合はIf~Thenステートメントを使うべきです。
参考:Excel VBA入門 その53:「Select Caseに対応するCaseがありません。」の原因・対処方法
コメント
[…] 参考:Excel VBA入門 その23:複数の条件分岐で処理を実行させる(Select Case) […]