即効テクニック

その他関連のテクニック

Ifのネストを避けるには

(Excel 97/2000)
If文で判断する条件が複雑になると、ネストの中でネストして、またそのネストの中でネストして・・・と、大量のネストが発生してしまいます。
例えば、次のような条件分岐があるとします。
Sub 大量ネスト()
    Dim i      As Integer
    Dim myData As Integer
    
    For i = 1 To 5
        myData = Cells(i, 1).Value
        If myData <> 0 Then
            If myData <> 0.25 Then
                If myData <> 0.5 Then
                    If myData <> 0.75 Then
                        MsgBox "セルA" & i & _
                                "がすべての条件にあてはまりました"
                    End If
                End If
            End If
        End If
    Next i

End Sub
これは、Select Caseステートメントを使って、シンプルに書き換える事ができます。
Sub Sample1()
    Dim i      As Integer
    Dim myData As Integer
    
    For i = 1 To 5
        myData = Cells(i, 1).Value
    
        Select Case myData
            Case 0, 0.25, 0.5, 0.75
            Case Else
                MsgBox "セルA" & i & _
                       "は「0, 0.25, 0.5, 0.75」ではありません"
        End Select

    Next i

End Sub
もしくは、次のマクロも同じです。
Sub Sample2()
    Dim i      As Integer
    Dim myData As Integer
    
    For i = 1 To 5
        myData = Cells(i, 1).Value
    
        If myData <> 0 And _
           myData <> 0.25 And _
           myData <> 0.5 And _
           myData <> 0.75 Then
           MsgBox "セルA" & i & _
                  "は「0, 0.25, 0.5, 0.75」ではありません"
        End If

    Next i

End Sub