VBAでは条件分岐を行う際に If
文 と Select Case
文 のどちらかを使用します。
しかし、「どちらを選べばよいのか?」と迷うこともあるでしょう。本記事では、それぞれの特性を比較し、適切な使い分けを解説します。
目次
1. If文とSelect Case文の基本構文
(1) If文の基本構文
If 条件1 Then
'条件1がTrueのときの処理
ElseIf 条件2 Then
'条件2がTrueのときの処理
Else
'どの条件にも当てはまらない場合の処理
End If
特徴
ElseIf
を使って 複数の条件を設定 可能- 比較演算子(
=, <, >, <=, >=, <>
)を自由に使える And
やOr
を使って 複雑な条件式 を設定可能
(2) Select Case文の基本構文
Select Case 評価対象
Case 値1
'値1のときの処理
Case 値2
'値2のときの処理
Case Else
'どの条件にも当てはまらない場合の処理
End Select
特徴
Case
に 特定の値や範囲を指定 可能- 可読性が高く、条件が多いときに整理しやすい
- 比較する変数が1つの場合に適している
2. If文とSelect Case文の比較
比較項目 | If文 | Select Case文 |
---|---|---|
適した用途 | 条件が複雑な場合 | 同じ変数に対して複数の値を比較する場合 |
可読性 | 条件が増えると読みにくい | 見やすく整理しやすい |
処理速度 | 条件の数が少ないときに有利 | 条件が多い場合に効率的 |
比較の柔軟性 | And / Or で複雑な条件を作れる | To や Is を使って範囲を指定できる |
3. 使い分けの判断基準
(1) 比較する変数が1つならSelect Case
Select Case
は 「1つの変数に対して、複数の値を比較する」 のに適しています。
例: 点数による成績判定
Sub CheckGrade()
Dim score As Integer
score = Range("A1").Value
Select Case score
Case 90 To 100
MsgBox "評価: A"
Case 80 To 89
MsgBox "評価: B"
Case 70 To 79
MsgBox "評価: C"
Case Else
MsgBox "評価: F"
End Select
End Sub
ポイント
score
という 1つの変数 に対して、複数のケースを判定するCase 90 To 100
のように 範囲を指定 でき、分かりやすい
(2) 複数の条件を組み合わせるならIf
If
は 「異なる変数を組み合わせたり、複雑な条件を設定する」 のに適しています。
例: 3つの条件を組み合わせた判定
Sub CheckBonus()
Dim sales As Double, experience As Integer, performance As String
sales = Range("A1").Value
experience = Range("B1").Value
performance = Range("C1").Value
If sales > 100000 And experience >= 5 And performance = "A" Then
MsgBox "ボーナス支給: 高額"
ElseIf sales > 50000 And performance = "B" Then
MsgBox "ボーナス支給: 中額"
Else
MsgBox "ボーナスなし"
End If
End Sub
ポイント
sales
・experience
・performance
の3つの条件 を組み合わせて判定And
を使って、複雑な条件分岐を実装
4. 条件の数による選択
(1) 条件が2〜3個ならIf
短い条件分岐なら If
の方が簡潔に書けます。
If score >= 90 Then
MsgBox "A"
ElseIf score >= 80 Then
MsgBox "B"
Else
MsgBox "C"
End If
→ Select Case
にすると余計に行数が増えるため If
の方が適している。
(2) 条件が4個以上ならSelect Case
条件が増えると If
は読みにくくなるため、Select Case
を使うと可読性が向上します。
Select Case score
Case 90 To 100: MsgBox "A"
Case 80 To 89: MsgBox "B"
Case 70 To 79: MsgBox "C"
Case Else: MsgBox "D"
End Select
→ 条件が整理され、見やすくなる。
5. IfとSelect Caseの組み合わせ
場合によっては、If
と Select Case
を組み合わせることも有効です。
例: 性別と年齢でカテゴリを分ける
Sub CheckCategory()
Dim gender As String, age As Integer
gender = Range("A1").Value
age = Range("B1").Value
If gender = "Male" Then
Select Case age
Case 0 To 18: MsgBox "男性: 未成年"
Case 19 To 60: MsgBox "男性: 成人"
Case Else: MsgBox "男性: シニア"
End Select
ElseIf gender = "Female" Then
Select Case age
Case 0 To 18: MsgBox "女性: 未成年"
Case 19 To 60: MsgBox "女性: 成人"
Case Else: MsgBox "女性: シニア"
End Select
Else
MsgBox "不明な性別"
End If
End Sub
ポイント
- 性別の判定を
If
で行い、その後Select Case
で年齢を分類 - 組み合わせることで、スッキリと整理
6. まとめ
選ぶ基準 | If文を使う | Select Case文を使う |
---|---|---|
条件の種類 | 異なる変数を比較 | 1つの変数に対して複数の値を比較 |
条件の数 | 2〜3個なら適切 | 4個以上なら見やすい |
柔軟性 | And / Or で複雑な条件を設定 | To / Is で範囲指定が可能 |
可読性 | 短い条件ならシンプル | 長い条件なら整理しやすい |
最適な選択をしよう!
- 「条件がシンプル or 複数の変数を比較」 →
If文
- 「1つの変数を基に、複数のケースを整理」 →
Select Case文
- 「両方の特性を活かした組み合わせ」 →
If + Select Case
状況に応じて適切に使い分けることで、読みやすく、効率的なコード を作ることができます!
コメント