VBAのIf文はとても便利ですが、条件が増えると「入れ子構造(ネスト)」が深くなり、読みづらくなってしまいます。特に処理が複雑になると、どこまでが条件の中なのか分からなくなることもあります。
ネストを浅くしてコードをすっきりさせる書き方について紹介します。
初めてでもすぐに取り入れられる考え方なので、日々のコーディングに役立ててみてください。
ネストが深いIf文の例
次のコードは、3つの条件がすべて満たされたときだけメッセージを表示する処理です。
Sub DeepNestExample()
Dim age As Long
Dim gender As String
Dim member As Boolean
age = 30
gender = "M"
member = True
If age > 20 Then
If gender = "M" Then
If member = True Then
MsgBox "条件をすべて満たしました"
End If
End If
End If
End Sub
解説
このコードは正しく動きますが、条件が増えるごとにネストが深くなり、見づらくなるのが問題です。
特に実務では、条件の中に処理が複数行あることも多く、どこがどのIfに対応しているのか混乱を招きます。
ネストを浅くした書き方
方法1:条件を早めに排除する(早期リターン)
次のように、「満たしていない条件」を先に Exit Sub などで排除することで、ネストを浅くできます。
Sub FlatIfExample()
Dim age As Long
Dim gender As String
Dim member As Boolean
age = 30
gender = "M"
member = True
If age <= 20 Then Exit Sub
If gender <> "M" Then Exit Sub
If member = False Then Exit Sub
MsgBox "条件をすべて満たしました"
End Sub
方法2:複数の条件をAndでまとめる
1行のIf文で複数条件をまとめることで、ネストをなくすことができます。
Sub AndConditionExample()
Dim age As Long
Dim gender As String
Dim member As Boolean
age = 30
gender = "M"
member = True
If age > 20 And gender = "M" And member = True Then MsgBox "条件をすべて満たしました"
End Sub
※ 上記のように If 条件 Then 処理 を1行で書く方法は、VBAの省略記法です。
If ... Then のあとに1行だけ処理を書く場合、End If を省略することができます。見やすさとのバランスを考えて使いましょう。
実装するメリット
ネストを浅く書くことには、次のようなメリットがあります。
- コードの構造がわかりやすくなり、読みやすく・直しやすい
- 条件の見落としや対応関係のミスが減る
- デバッグ時にも、どこで止まったかを把握しやすい
- 他人のコードを引き継いだ際にも理解がしやすくなる
実務では、「見やすさ」や「保守のしやすさ」が非常に重要です。ネストを浅くするだけでコードの品質がグッと上がるため、意識して書くようにしてみてください。
まとめ
If文のネストは、条件が増えるほど複雑になります。しかし、早めに条件をふるい落とす構成や、複数条件を1行にまとめることで、処理の流れを単純に保つことができます。
特に実務の場では、あとから見返してもわかるコードを書くことがとても大切です。
ネストの浅い書き方は、初心者の方にもすぐに使えるテクニックなので、ぜひ意識して活用してみてください。
