Ifのネストを避けるには
 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


Excel97/2000



戻る


Excel Word Access VBA! モーグ