IF文 VBAテクニック集 VBA一覧 文法・構文

【VBA】IF文のORを3つ以上組み合わせた複数条件|実務で崩れない条件分岐の設計方法

VBAで条件分岐を書くとき、
「AまたはBまたはCなら処理する」
というように、複数の条件をまとめて判定したい場面は非常に多くあります。

例えば次のようなケースです。

  • ステータスが「完了」「承認済」「処理済」のいずれかなら処理する
  • エラーコードが「101」「102」「103」のいずれかならログを出力する
  • 担当部署が「営業」「総務」「人事」のいずれかならメール送信する

このとき、多くの人が次のような疑問を持ちます。

  • ORを3つ以上つなげても問題ないのか
  • 括弧はどこまで必要なのか
  • 条件が増えたとき、コードはどう書くのが正しいのか
  • 可読性や保守性を考えると、別の書き方の方がよいのか

実務では、
条件が増えるほどコードは壊れやすくなります。

そして多くの場合、問題は「文法」ではなく
設計と読みやすさにあります。

この記事では、

  • IF文でORを3つ以上使う基本的な書き方
  • 条件が増えたときに起きる典型的な失敗
  • 可読性・保守性を高める設計方法
  • Select Caseとの使い分け
  • 実務で崩れない条件分岐の考え方

まで、実務視点で整理して解説します。

✅ VBA IF文でORを3つ以上使う基本構文

IF文でORを3つ以上使うこと自体は、文法的には何の問題もありません。しかし実務では、「とりあえずつなげた」コードが後から読みにくくなり、仕様変更のたびに修正ミスが発生することがあります。特に条件が増えていく業務では、コードが長くなるほどバグの発見が難しくなります。また、ORを増やすだけでは処理の意図が伝わらないこともあります。ここを理解せずに書き始めると、将来の保守で必ず苦労することになります。まずは基本構文を確認しつつ、「どこまでが安全な書き方か」を押さえておきましょう。

・基本構文:ORを3つ以上使うIF文

If status = "完了" _
   Or status = "承認済" _
   Or status = "処理済" Then

    MsgBox "対象ステータスです"

End If

 

・なぜこの書き方にしているのか(設計意図)

ここで重要なのは:

1行に詰め込まない

ということです。

例えば次の書き方:

If status = "完了" Or status = "承認済" Or status = "処理済" Then

これは文法的には正しいですが、
実務では次の問題が起きます。

  • 読みにくい
  • 修正しにくい
  • 条件追加時に崩れやすい

・実務での推奨ルール

条件は縦に並べる

です。

If status = "完了" _
   Or status = "承認済" _
   Or status = "処理済" _
   Or status = "再処理" Then

これは:

保守性のための書き方

です。


✅ OR条件が増えたときに起きやすい典型的な失敗

OR条件は便利ですが、数が増えるほどバグの原因になりやすくなります。特に、条件の追加や削除を繰り返す業務では、気づかないうちに誤った条件が残ることがあります。また、コピー&ペーストによって別の変数を比較してしまうミスも非常に多いです。さらに、括弧の付け忘れや条件の優先順位を誤解しているケースもあります。こうした問題は、最初は小さく見えても、後から大きなトラブルにつながります。ここでは、実務で本当に多い失敗パターンを整理します。

・失敗例:条件の書き漏れ

If status = "完了" _
   Or "承認済" _
   Or "処理済" Then

これは:

完全に誤り

です。

・なぜ危険なのか

このコードは:

Or "承認済"

が常に True になります。

つまり:

常に実行される

という致命的なバグになります。

・正しい書き方

If status = "完了" _
   Or status = "承認済" _
   Or status = "処理済" Then

 

・実務上の重要ポイント

すべての条件に変数を書く

です。


✅ OR条件が5つ以上になったときの設計判断

ここが実務で最も重要なポイントです。OR条件が3つや4つなら問題ありませんが、5つ以上になるとコードの読みやすさが急激に低下します。また、仕様変更によって条件が増える可能性がある場合、このまま書き続けると保守が困難になります。さらに、同じ条件を複数の場所で使う場合、修正漏れが発生するリスクも高くなります。ここを判断せずに書き続けると、将来必ずコードが破綻します。ここでは、「いつ書き方を変えるべきか」という設計判断を整理します。

・判断基準

ORが5つ以上になったら設計を見直す

です。

・例:条件が増えた場合

If status = "完了" _
   Or status = "承認済" _
   Or status = "処理済" _
   Or status = "再処理" _
   Or status = "確認済" _
   Or status = "保留" Then

この時点で:

危険信号

です。

OR条件が増えてきたときは、
単に条件を追加するのではなく、
ANDとORの組み合わせ方そのものを見直すことが重要になります。

実務で迷いやすい複数条件の設計方法を体系的に整理したい方は、

【VBA】IF文のandとorを組み合わせた複数条件|実務で迷わない条件設計
もあわせて確認してみてください。


✅ Select Caseを使った方がよいケース

IF文は柔軟ですが、同じ変数を複数の値と比較する場合は、Select Caseの方が圧倒的に読みやすくなります。しかし実務では、「とりあえずIFで書く」という習慣があるため、コードが不必要に複雑になることがあります。また、条件追加時の修正範囲が広がることもあります。ここを理解していないと、将来の保守コストが大きくなります。重要なのは、「文法」ではなく「意図が伝わる構造」を選ぶことです。

・推奨コード

Select Case status

    Case "完了"
        MsgBox "対象です"

    Case "承認済"
        MsgBox "対象です"

    Case "処理済"
        MsgBox "対象です"

End Select

 

・この書き方のメリット

  • 読みやすい
  • 修正しやすい
  • 条件追加が簡単
  • バグが減る

・実務判断

同じ変数を複数の値と比較するなら Select Case

です。

IF文で条件を増やし続けるよりも、
Select Caseを使った方が読みやすく、安全に管理できる場面は非常に多くあります。

実務でどのような場面にSelect Caseを適用できるのか、
具体的な使用例や判断基準を整理したい方は、

【VBA】Select Case文の使用例と適用パターン|条件分岐を効率化する方法
もあわせて確認してみてください。


✅ OR条件を配列で管理する方法(再利用性重視)

ここからが実務設計の重要ポイントです。条件が増えたり、複数の場所で同じ判定を使う場合、コードを直接書き続けると管理が難しくなります。また、仕様変更時にすべての場所を修正する必要があり、作業ミスの原因になります。こうした問題を防ぐためには、「条件をデータとして管理する」という考え方が重要になります。これは単なるテクニックではなく、再利用性と保守性を高める設計です。

・実務コード

Function IsTargetStatus(status As String) As Boolean

    Dim targetStatuses As Variant
    Dim i As Long

    targetStatuses = Array( _
        "完了", _
        "承認済", _
        "処理済", _
        "再処理" _
    )

    For i = LBound(targetStatuses) To UBound(targetStatuses)

        If status = targetStatuses(i) Then
            IsTargetStatus = True
            Exit Function
        End If

    Next i

    IsTargetStatus = False

End Function

 

・なぜこの書き方にしているのか

理由:

条件を一箇所に集約するため

です。

・別の書き方との比較

IF文で書く場合:

  • 同じ条件を何度も書く
  • 修正漏れが起きる

この方法:

  • 条件が1箇所
  • 再利用できる
  • 保守が簡単

・実務での典型的な用途

  • ステータス判定
  • 部署判定
  • エラーコード判定
  • 対象ユーザー判定

条件を配列で管理する方法は、
再利用性や保守性を高めるうえで非常に有効です。
しかし、条件がさらに増えてくると、
ネストが深くなり、コードが読みづらくなる問題が発生します。

条件分岐を整理し、
「壊れにくく」「後から修正しやすい」構造を作る考え方については、

【VBA】If文の複数分岐を実現する方法|ネスト地獄を避けて実務で壊れない条件分岐を書く
もあわせて確認してみてください。


 

✅ まとめ:VBA IF文のORを3つ以上使うときの設計判断

  • ORを3つ以上使うこと自体は問題ない
  • 条件は1行に詰め込まず縦に書く
  • すべての条件に変数を書く
  • ORが5つ以上になったら設計を見直す
  • 同じ変数の比較はSelect Caseを検討する
  • 条件が増える場合は配列や関数で管理する

IF文のORは非常に便利な機能ですが、
本当に重要なのは:

何個まで書けるか

ではありません。

重要なのは:

いつ書き方を変えるか

です。

条件分岐は、単なる文法ではなく
業務設計そのものです。

ぜひ、
読みやすく・修正しやすく・再利用できる
条件分岐を意識して設計してみてください。

    -IF文, VBAテクニック集, VBA一覧, 文法・構文