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循环23,直接进入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