退出excel中的嵌套循环

时间:2012-05-10 14:56:37

标签: excel loops excel-vba vba

我在宏中有一个循环我正在编写以下结构:

本书中有两个工作表。原始数据(因此为endpointData变量)和G / L(总帐)工作表(因此为endpointGL变量)

此函数中有三个for循环:

(1)第一个循环遍历原始数据文件中的每个记录。
(2)第二个循环遍历来自REGEXP的验证匹配(正则表达式搜索)和
(3)第三个循环通过G / L并找到相应的匹配将(使用:PUT_DATA_RANGE)数据放入适当的位置。

以下是我所得到的:

伪码:

For i = 2 To endpointData

    If SOME_TEST = True Then
        Set MATCHES = REGEXP.EXECUTE()
        For Each myMatch In MATCHES
            For j = 1 To endpointGL
                If myMatch.value = SOME_CONDITION Then
                    PUT_DATA_RANGE
                    Exit For
                ElseIf myMatch.value <> SOME_CONDITION Then
                    MsgBox ("there might be a problem")
                    ' EXIT BOTH LOOPS HERE

                    ' write handler code
            Next
            End If
        Next
    End If
Next i

现在你会注意到我对自己有一些评论。如果第三个循环在G / L中找不到匹配,则代码当前中断以通知用户。但是消息框MsgBox("there might be a problem")与第三个循环一起循环。如何获得excel退出BOTH循环并将FIRST for循环带到原始数据中的下一个可用记录?

顺便说一下,我试过用Exit For退出它,但这似乎并不完全正常。

1 个答案:

答案 0 :(得分:4)

我看到两个选项。

1)使用一系列布尔值来检查外环是否应该继续

2)使用goto语句直接从内部循环退出到主过程

在这种情况下,goto可能不是那么糟糕,因为你没有跳到完全不同的代码部分。记得好......