IF文 VBAで自動化 VBAテクニック集 VBA一覧 文法・構文

【VBA】IF文での複数条件の考え方と書き方のコツ

Excel VBA を使ったプログラミングでは、条件に応じて処理を分岐させる「IF 文」は欠かせません。
特に、「AかつBなら処理する」「AまたはBなら処理する」といった複数条件 の指定は、実務でもよく使われます。

本記事では、VBA における IF 文での複数条件の考え方・記述方法・注意点 を、具体的なコード例とともに解説します。

基本の IF 文構文

まずは基本構文から確認しましょう。

If 条件 Then
' 条件が真(True)のときの処理
Else
' 条件が偽(False)のときの処理(省略可能)
End If

複数条件の考え方

✅ AND(かつ)の考え方:すべての条件が満たされている場合

If 条件1 And 条件2 Then

✅ OR(または)の考え方:いずれか1つでも条件を満たしていればOK

If 条件1 Or 条件2 Then

AND 条件の実例:2つの条件がそろったら実行

Sub CheckPass()

Dim score As Integer
Dim attendance As Integer

score = Range("B2").Value
attendance = Range("C2").Value

If score >= 70 And attendance >= 8 Then

MsgBox "合格です!"

Else

MsgBox "不合格です。"

End If

End Sub

📌 点数と出席回数の両方を満たしている場合のみ「合格」判定になります。

【VBA】IF文のandとorを組み合わせた複数条件

OR 条件の実例:どちらかを満たせば実行

Sub WarnIfLate()

Dim lateCount As Integer
Dim absentCount As Integer

lateCount = Range("D2").Value
absentCount = Range("E2").Value

If lateCount > 3 Or absentCount > 1 Then

MsgBox "要注意:遅刻または欠席が多いです"

End If

End Sub

📌 遅刻が多い or 欠席が多い、いずれかを満たしていれば警告を表示します。

【VBA】IF文のandとorを組み合わせた複数条件

括弧 () の使い方と優先順位

VBA では、AND よりも OR の方が優先される ため、条件が混在するときは括弧で明示的に制御 する必要があります。

❌ 誤解を招く例(優先順位に注意)

If A = 1 Or B = 2 And C = 3 Then

これは実際には
If A = 1 Or (B = 2 And C = 3) Then
として処理されます。

✅ 正しい括弧の使用

If (A = 1 Or B = 2) And C = 3 Then

📌 条件の組み合わせが複雑になるほど、括弧で意図を明確にすることが重要です。

【VBA】IF文の括弧を用いた複数条件

否定(Not)の使い方

条件を反転したい場合は、Not を使います。

If Not IsNumeric(Range("A1").Value) Then

MsgBox "数値ではありません"

End If

📌 「数値でない場合」など、否定の条件もよく使われます。

条件を変数に分けると読みやすくなる

複雑な条件式は 変数に分けることで読みやすく なります。

Sub EvaluateCondition()

Dim isScoreOk As Boolean
Dim isAttendanceOk As Boolean

isScoreOk = Range("B2").Value >= 70
isAttendanceOk = Range("C2").Value >= 8

If isScoreOk And isAttendanceOk Then

MsgBox "合格!"

Else

MsgBox "不合格。"

End If

End Sub

📌 条件式を見やすくすることで、保守性・デバッグ効率が向上します。


ElseIf を使った複数条件の分岐

複数のパターンを分けて処理するなら、ElseIf を活用するとスマートです。

Sub JudgeGrade()

Dim score As Integer
score = Range("A1").Value

If score >= 90 Then

MsgBox "評価:A"

ElseIf score >= 70 Then

MsgBox "評価:B"

ElseIf score >= 50 Then

MsgBox "評価:C"

Else

MsgBox "評価:D"

End If

End Sub

📌 点数に応じてランクを分ける典型的なパターンです。

【VBA】Select Case文での複数処理の方法

よくあるミスと注意点

ミス例解説
If A = B And CC は論理値(True/False)と解釈されてしまう
比較が抜けているIf A = B And C = 1 のように、すべての条件に比較演算子が必要!
括弧がない条件の意図が伝わらない・誤判定になることがある

まとめ

項目内容
ANDすべての条件が成り立つ場合に処理
ORいずれか1つでも条件が成り立つ場合に処理
括弧の使用条件の優先順位を明確にするために必須
変数に分ける複雑な条件式の可読性が上がる
ElseIf条件を段階的に評価したいときに便利

    -IF文, VBAで自動化, VBAテクニック集, VBA一覧, 文法・構文