Excel VBAを使った自動化や効率化を学ぶうえで欠かせないのがVBA If文です。If文を使えば「もし○○なら〜する」というように、プログラムに判断力・条件分岐を持たせることができます。この記事では、初心者でも理解しやすいように、VBAのIf文を使いこなすための基本構文と実例を中心に、ElseIf/Elseの応用、比較演算子・論理演算子の活用法まで丁寧に解説します。
If文とは何か?基本の役割と構造
VBA If文は、特定の条件が満たされたときにのみ処理を実行させるための構文です。これにより、プログラムに柔軟な判断を与えることができます。
If 条件式 Then
条件がTrueのときに実行する処理
End If
1行で書ける場合と複数行で書く場合の2パターンがあります。
' 1行構文
If x > 10 Then MsgBox "10より大きい"
' 複数行構文
If x > 10 Then
MsgBox "10より大きい"
Range("A1").Value = "OK"
End If
Else・ElseIfを使った複雑な条件分岐
If score >= 90 Then
MsgBox "優秀です"
ElseIf score >= 70 Then
MsgBox "合格です"
Else
MsgBox "不合格です"
End If
VBAは上から順番に条件を判定するため、広い範囲の条件を先に書くと誤判定になることがあります。狭い条件 → 広い条件の順で記述するのがポイントです。
論理演算子・比較演算子を活用した条件式の書き方
| 演算子 | 意味 | 例 |
|---|---|---|
| = | 等しい | If x = 10 Then |
| <> | 等しくない | If x <> 0 Then |
| < | より小さい | If x < 5 Then |
| > | より大きい | If x > 5 Then |
| <= | 以下 | If x <= 10 Then |
| >= | 以上 | If x >= 20 Then |
論理演算子を使えば複数条件を組み合わせることができます。
If score >= 70 And score < 90 Then
MsgBox "合格(良)"
End If
If score < 50 Or AbsenceCount > 3 Then
MsgBox "不合格"
End If
If Not IsEmpty(Range("A1")) Then
MsgBox "セルA1に値があります"
End If
入れ子・ネスト構造と1行記述テクニック
If x > 0 Then
If x Mod 2 = 0 Then
MsgBox "正の偶数です"
Else
MsgBox "正の奇数です"
End If
End If
処理が短い場合は1行構文でも記述可能です。
If x >= 60 Then MsgBox "合格" Else MsgBox "不合格"
実践サンプルコード
点数判定の例
Sub ScoreCheck()
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 "不合格です"
End If
End Sub
セルの値による条件分岐
Sub CellCheck()
Dim val As Variant
val = Range("B1").Value
If IsEmpty(val) Then
MsgBox "セルは空です"
ElseIf IsNumeric(val) Then
MsgBox "数値が入力されています"
Else
MsgBox "文字列が入力されています"
End If
End Sub
複雑な条件にはSelect Caseを活用
If文が長くなりすぎる場合は、Microsoft公式リファレンスで紹介されているSelect Case構文を使うと可読性が向上します。
Select Case Range("C1").Value
Case "A"
MsgBox "優秀"
Case "B"
MsgBox "良"
Case "C"
MsgBox "可"
Case Else
MsgBox "再評価"
End Select
まとめ・If文を使いこなしてVBAの条件分岐をマスターしよう
- If〜Then〜End Ifが基本構文
- ElseIf/Elseで複数条件を整理
- 比較演算子や論理演算子を駆使して正確な条件設定を行う
- 複雑な分岐はSelect Caseでスッキリ整理
VBAのIf文を理解すれば、Excelの自動化や業務効率化の幅が大きく広がります。まずはシンプルな条件から始め、徐々に複雑なロジックへ発展させていきましょう。
さらに実践的な事例は、Excel VBAのIf文20事例による実践ガイドでも確認できます。


