4

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

这本书有两个工作表。原始数据(因此是 endpointData 变量)和总帐(总帐)表(因此是 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

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

顺便说一句,我试过用 an 退出它,Exit For但这似乎并不完全有效。

4

1 回答 1

4

我看到两个选项。

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

2)使用goto语句退出内循环直接回到主程序

在这种情况下,goto 可能不会那么糟糕,因为您没有跳转到完全不同的代码部分。好好记录一下吧...

于 2012-05-10T15:01:25.460 回答