- 「If文の基本的な書き方がよくわからない…」
 - 「複数条件の組み合わせってどう書けばいいの?」
 - 「きれいなコードで分岐処理を書きたい!」
 
「条件によって処理を変えたいけど、VBAのIfがうまく書けない…」と悩んでいませんか?
VBAのIfステートメントを正しく使えば、処理の流れを柔軟にコントロールできるようになります。この記事では、基本の構文から複数条件、ネストや一行記述までわかりやすく解説します!
If文の基本構文と使い方
VBAのIfステートメントは、条件に応じて処理を分岐させるための基本構文です。「もし○○なら、△△をする」というロジックをシンプルに表現できます。
単純な条件分岐の書き方
Sub CheckThreshold()
    Dim score As Integer
    score = 65
    If score >= 60 Then
        MsgBox "基準をクリアしました"
    Else
        MsgBox "再確認が必要です"
    End If
End Subこの例では、変数scoreの値が60以上であれば「基準をクリアしました」と表示され、それ以外は「再確認が必要です」となります。基本的な構文ですが、処理の流れを分かりやすく制御できます。
ElseIfで分岐を増やす
複数の条件を順に評価したい場合は、ElseIfを使って条件分岐を増やしましょう。条件が多いときでも、コードが読みやすくなります。
条件に応じてメッセージを変える例
Sub EvaluateRank()
    Dim points As Integer
    points = 78
    If points >= 90 Then
        MsgBox "ランク:S"
    ElseIf points >= 75 Then
        MsgBox "ランク:A"
    ElseIf points >= 60 Then
        MsgBox "ランク:B"
    Else
        MsgBox "ランク:C"
    End If
End Subこのコードでは、点数に応じてランクが決定されます。上から順に条件を評価するため、最初に該当した条件のみ実行されます。
And・Or・Notを使った複雑な条件
If文は論理演算子(And、Or、Not)を使うことで、より複雑な条件を組み合わせることができます。
条件を複合的にチェックする例
Sub ComplexCheck()
    Dim age As Integer, hasPermission As Boolean
    age = 20
    hasPermission = False
    If age >= 18 And hasPermission = True Then
        MsgBox "入場許可"
    ElseIf age >= 18 Or hasPermission = True Then
        MsgBox "条件付き許可"
    Else
        MsgBox "入場不可"
    End If
End Subこの例では、年齢と許可フラグの両方の条件を使って入場可否を判断しています。複雑な業務ロジックでもこのように分岐を整理できます。
ネストされたIf文の活用
If文の中にさらにIf文を書くことで、条件の組み合わせによって処理を細かく分けることができます。これをネスト(入れ子)と呼びます。
条件を階層的に評価する例
Sub NestedIfExample()
    Dim temperature As Integer
    temperature = 28
    If temperature > 25 Then
        If temperature >= 30 Then
            MsgBox "猛暑日です!水分補給を忘れずに"
        Else
            MsgBox "ちょっと暑いですね"
        End If
    Else
        MsgBox "快適な気温です"
    End If
End Subこのコードでは、25度を基準に一度分岐し、さらに30度を超えていれば別のメッセージを表示するという多段階の判断ができます。
一行で書けるIf文の使い方
処理がシンプルな場合は、1行でIf文を書くことも可能です。ただし、複雑な条件分岐には向かないので、場面を選んで使いましょう。
一行Ifの例
Sub OneLineIf()
    Dim isHoliday As Boolean
    isHoliday = True
    If isHoliday Then MsgBox "今日はお休みです"
End SubIf 条件 Then 処理という形式で書くと、コードがコンパクトになります。サクッと条件チェックしたいときに便利です。
まとめ:If文を使いこなして処理を柔軟に!
VBAのIfステートメントは、あらゆるロジックの土台になります。条件分岐をしっかり理解することで、より高度で実用的なマクロが書けるようになります。
今回のポイント
- ✅ 
If ~ Elseは条件に応じた処理の分岐に使う! - ✅ 
ElseIfやAnd/Or/Notを使って複雑な条件にも対応! - ✅ ネストや1行Ifも使いこなして、読みやすくメンテナンスしやすいコードに!
 
処理を状況に応じて変えられるようになると、マクロの自由度が一気にアップしますよ!💡

	
			
			
			
			
			
			
			
			
			
コメント