Excel VBA | If..ElseIf 文を使った複数条件分岐

VBA
スポンサーリンク

要点まとめ

1. 複数条件の判断が可能

  • 通常の If 条件式 Then … Else … End If に加えて、複数の条件を順にチェックできる書式として、ElseIf を使った構文があります。
  • 書式例:
If 条件式1 Then
    条件式1が True の時の処理
ElseIf 条件式2 Then
    条件式2が True の時の処理
ElseIf 条件式3 Then
    条件式3が True の時の処理
Else
    いずれの条件式も False の時の処理
End If
``` :contentReference[oaicite:2]{index=2}
VB

2. 処理の流れ・注意点

  • 最初に “条件式1” が評価され、True だったらその処理を実行し、以降の ElseIf は評価されずに End If の次に処理が移ります。
  • 条件式1 が False の場合、次に “条件式2” が評価され… という順番です。
  • “条件式3” も同様、最後まで条件が False の場合に Else の処理(省略可能)に入ります。
  • 流れとして、一つの条件が True になった時点で他の条件の評価はスキップされるので、条件式の記述順が結果に影響を与える点に注意が必要です。
  • また、If 文の中にさらに If 文(ネスト)を記述して、より複雑な条件分岐を行うことも可能です(このページでは簡略的に触れられています)。

3. サンプルコードと動作の例

  • サンプルコード:
Option Explicit

Sub テスト()
    Dim result As Integer

    result = Range("B2").Value
    If result > 70 Then
        MsgBox "合格です"
    ElseIf result > 50 Then
        MsgBox "追加レポートが必要です"
    Else
        MsgBox "不合格です"
    End If
End Sub
``` :contentReference[oaicite:7]{index=7}  
VB
  • 解説:
    • セル B2 の値を取得。
    • 70 より大きければ “合格です”。
    • 70 以下(=最初の条件 False)で、かつ 50 より大きければ “追加レポートが必要です”。
    • それ以外(50 以下)なら “不合格です”。
    • 例として B2 に 64 を入れた場合、70 より大きくないが 50 より大きいので “追加レポートが必要です” が表示されます。
    • B2 に 45 を入れると、いずれの条件も True にならず “不合格です” の処理が実行されます。

4. まとめ

  • If … ElseIf … Else … End If の構文を使うことで、ひとつの If 文の中で複数の条件分岐を記述できます。
  • 条件の優先順(記述の順)や早期脱出(一つ True ならそれ以降を評価しない)を理解しておくことが重要です。
  • ケースに応じて Else を省略することも可能ですが、必要に応じて “どれにも当てはまらない” 場合の処理を考えておくと安心です。
  • より細かい条件分岐が必要な場合には、ネストした If を使う選択肢もあります。
VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました