【Excelマクロ】Ifのネストを浅くする考え方

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行にまとめることで、処理の流れを単純に保つことができます。

特に実務の場では、あとから見返してもわかるコードを書くことがとても大切です。

ネストの浅い書き方は、初心者の方にもすぐに使えるテクニックなので、ぜひ意識して活用してみてください。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール