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
|