VBAで条件分岐を書くとき、
「AまたはBまたはCなら処理する」
というように、複数の条件をまとめて判定したい場面は非常に多くあります。
例えば次のようなケースです。
- ステータスが「完了」「承認済」「処理済」のいずれかなら処理する
- エラーコードが「101」「102」「103」のいずれかならログを出力する
- 担当部署が「営業」「総務」「人事」のいずれかならメール送信する
このとき、多くの人が次のような疑問を持ちます。
- ORを3つ以上つなげても問題ないのか
- 括弧はどこまで必要なのか
- 条件が増えたとき、コードはどう書くのが正しいのか
- 可読性や保守性を考えると、別の書き方の方がよいのか
実務では、
条件が増えるほどコードは壊れやすくなります。
そして多くの場合、問題は「文法」ではなく
設計と読みやすさにあります。
この記事では、
- IF文でORを3つ以上使う基本的な書き方
- 条件が増えたときに起きる典型的な失敗
- 可読性・保守性を高める設計方法
- Select Caseとの使い分け
- 実務で崩れない条件分岐の考え方
まで、実務視点で整理して解説します。
目次
- ✅ VBA IF文でORを3つ以上使う基本構文
- ・基本構文:ORを3つ以上使うIF文
- ・なぜこの書き方にしているのか(設計意図)
- ・実務での推奨ルール
- ✅ OR条件が増えたときに起きやすい典型的な失敗
- ・失敗例:条件の書き漏れ
- ・なぜ危険なのか
- ・正しい書き方
- ・実務上の重要ポイント
- ✅ OR条件が5つ以上になったときの設計判断
- ・判断基準
- ・例:条件が増えた場合
- ✅ Select Caseを使った方がよいケース
- ・推奨コード
- ・この書き方のメリット
- ・実務判断
- ✅ OR条件を配列で管理する方法(再利用性重視)
- ・実務コード
- ・なぜこの書き方にしているのか
- ・別の書き方との比較
- ・実務での典型的な用途
- ✅ まとめ:VBA IF文のORを3つ以上使うときの設計判断
✅ 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は非常に便利な機能ですが、
本当に重要なのは:
何個まで書けるか
ではありません。
重要なのは:
いつ書き方を変えるか
です。
条件分岐は、単なる文法ではなく
業務設計そのものです。
ぜひ、
読みやすく・修正しやすく・再利用できる
条件分岐を意識して設計してみてください。