VBAのIf文をネスト(入れ子)して使う方法と注意点

VBAのIf文は、単純な条件分岐だけでなく、「ネスト(入れ子)」することで、より細かい条件分岐を実現できます
ただし、ネストを多用するとコードが読みにくくなるため、適切に使うことが重要です。

この記事では、If文のネストの基本的な使い方と、実際の例を交えて注意点を解説します。


1. If文をネストするとは?

ネストとは、If文の内部に別のIf文を記述することを指します。
これにより、「ある条件が満たされた場合に、さらに別の条件をチェックする」といった処理が可能になります。

基本構文

If 条件1 Then
If 条件2 Then
'条件1と条件2の両方がTrueのとき実行
Else
'条件1はTrueだが、条件2がFalseのとき実行
End If
Else
'条件1がFalseのとき実行
End If

2. Ifのネストの実用例

(1) 2段階の条件判定

「最初の条件がTrueなら、次の条件を判定する」というシンプルな分岐です。

例:A1の値が50以上なら、さらにB1の値を確認してメッセージを表示

Sub NestedIfExample1()
If Range("A1").Value >= 50 Then
If Range("B1").Value >= 100 Then
MsgBox "A1は50以上、かつB1は100以上です"
Else
MsgBox "A1は50以上ですが、B1は100未満です"
End If
Else
MsgBox "A1は50未満です"
End If
End Sub

ポイント

  • A1が50以上の場合にのみ、B1の値をチェックする。
  • 条件が段階的に評価されるため、無駄な判定を減らせる。

(2) 3段階の条件判定

「2つの条件の組み合わせに加えて、さらにもう1つの条件を判定する」分岐です。

例:年齢と点数を基に合格・不合格を判定

Sub NestedIfExample2()
Dim age As Integer, score As Integer
age = Range("A1").Value
score = Range("B1").Value

If age >= 18 Then
If score >= 80 Then
MsgBox "合格です!"
Else
MsgBox "年齢はOKですが、点数が足りません"
End If
Else
If score >= 90 Then
MsgBox "未成年ですが、特別に合格です"
Else
MsgBox "年齢も点数も条件を満たしていません"
End If
End If
End Sub

ポイント

  • ネストを活用して、細かい条件分岐を実装
  • 未成年でも特別合格のルールを追加
  • 条件が増えるほど、可読性が低下する点に注意。

3. Ifのネストを使う際の注意点

(1) ネストが深くなりすぎると可読性が悪化

深くネストしすぎると、コードが読みにくくなります。

If A Then
If B Then
If C Then
If D Then
'かなり深いネスト(読みにくい)
End If
End If
End If
End If

対策

  • ElseIfを使ってネストを減らす
  • 早期リターン(Exit Sub)を使う

(2) ElseIfを活用してシンプルに

ネストを減らすには、ElseIf を活用すると良い。

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

If score >= 90 Then
MsgBox "優秀"
ElseIf score >= 80 Then
MsgBox "合格"
Else
MsgBox "不合格"
End If
End Sub

メリット

  • ネストを減らしてコードがシンプルに
  • 条件分岐が一目で分かる

(3) 早期リターン(Exit Sub)を活用

条件が満たされない場合、早めに処理を終了することで、ネストを減らす。

Sub UseEarlyExit()
Dim age As Integer
age = Range("A1").Value

If age < 18 Then
MsgBox "未成年のため対象外"
Exit Sub 'ここで処理を終了
End If

'ここまで到達するのは、age >= 18 の場合のみ
MsgBox "対象者です"
End Sub

メリット

  • 不要なネストを削減
  • 処理の流れを簡潔に

4. まとめ

  • If文をネストすることで、複雑な条件分岐を実現可能
  • ネストが深くなりすぎると可読性が悪化するため、ElseIfや早期リターンを活用
  • 適切な書き方を意識すると、読みやすくメンテナンスしやすいコードになる

VBAのIf文を適切に使いこなして、より分かりやすく効率的なプログラムを書いてみてください!

コメント

タイトルとURLをコピーしました