VBA 嵌套 "for" 和 "if"
VBA nested "for" and "if"
我在循环内嵌套 if
,基本上是:
1: For i = 1 To n
If condition1 Then
2: For j = 1 To m
If condition2 Then
3: For k = 1 To p
If condition3 Then
statement1
End If
Next k
End If
Next j
End If
Next i
在statement1
之后,我想Exit
循环2
和3
,直接进入1
。
但是,如果我使用 Exit For
,这只会退出 3
。如果我在1
之前放一行,然后用GoTo
引用它,它也不行,因为程序必须以1
.
开头
您可以使用辅助 Boolean
变量来标记何时退出循环 2,如下所示
Dim exitLoop2 As Boolean
For i = 1 To n
If condition1 Then
exitLoop2 = False ' set it to false at the beginning of any loop 2
For j = 1 To m
If condition2 Then
For k = 1 To p
If condition3 Then
exitLoop2 = True ' this will make you exit loop 2 once out of loop 3
Exit For ' this will exit loop 3
'statement1
End If
Next
End If
If exitLoop2 Then Exit For ' exit loop 2 if needed
Next
End If
Next
还有更优雅的方式。将需要退出的代码包装到虚拟 Do ... Loop Until True
块中,然后使用 Exit Do
立即退出。
For i = 1 To n
Do
If condition1 Then
For j = 1 To m
If condition2 Then
For k = 1 To p
If condition3 Then
statement1
Exit Do
End If
Next k
End If
Next j
End If
Loop Until True
Next i
我在循环内嵌套 if
,基本上是:
1: For i = 1 To n
If condition1 Then
2: For j = 1 To m
If condition2 Then
3: For k = 1 To p
If condition3 Then
statement1
End If
Next k
End If
Next j
End If
Next i
在statement1
之后,我想Exit
循环2
和3
,直接进入1
。
但是,如果我使用 Exit For
,这只会退出 3
。如果我在1
之前放一行,然后用GoTo
引用它,它也不行,因为程序必须以1
.
您可以使用辅助 Boolean
变量来标记何时退出循环 2,如下所示
Dim exitLoop2 As Boolean
For i = 1 To n
If condition1 Then
exitLoop2 = False ' set it to false at the beginning of any loop 2
For j = 1 To m
If condition2 Then
For k = 1 To p
If condition3 Then
exitLoop2 = True ' this will make you exit loop 2 once out of loop 3
Exit For ' this will exit loop 3
'statement1
End If
Next
End If
If exitLoop2 Then Exit For ' exit loop 2 if needed
Next
End If
Next
还有更优雅的方式。将需要退出的代码包装到虚拟 Do ... Loop Until True
块中,然后使用 Exit Do
立即退出。
For i = 1 To n
Do
If condition1 Then
For j = 1 To m
If condition2 Then
For k = 1 To p
If condition3 Then
statement1
Exit Do
End If
Next k
End If
Next j
End If
Loop Until True
Next i