- 「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 Sub
If 条件 Then 処理
という形式で書くと、コードがコンパクトになります。サクッと条件チェックしたいときに便利です。
まとめ:If文を使いこなして処理を柔軟に!
VBAのIfステートメントは、あらゆるロジックの土台になります。条件分岐をしっかり理解することで、より高度で実用的なマクロが書けるようになります。
今回のポイント
- ✅
If ~ Else
は条件に応じた処理の分岐に使う! - ✅
ElseIf
やAnd/Or/Not
を使って複雑な条件にも対応! - ✅ ネストや1行Ifも使いこなして、読みやすくメンテナンスしやすいコードに!
処理を状況に応じて変えられるようになると、マクロの自由度が一気にアップしますよ!💡
コメント