【问题标题】:VBA stop execution of current iteration of loopVBA停止执行当前循环迭代
【发布时间】:2015-05-04 08:41:30
【问题描述】:

如何停止 for 循环语句当前迭代的执行? Exit 结束整个循环的执行,我真的使用 goto 吗?

【问题讨论】:

  • 这是一个写得很糟糕的问题。主要是因为您没有解释是要跳过循环的一次迭代还是完全退出循环。您想在什么情况下跳过/退出?除了Exit,到目前为止你还尝试过什么?

标签: vba


【解决方案1】:

您通常希望在满足给定条件时跳过迭代 - 您在 VBA 中有 2 个选项:

  1. 将循环体包装在 If 块中:

        For i = 1 to 100
            If SomeCondition Then
                ' interesting iterations
            End If
        Next
    
  2. 使用GoTo 跳过迭代(并减少嵌套):

        For i = 1 to 100
            If Not SomeCondition Then GoTo Skip
    
            ' interesting iterations
    
    Skip:
        Next
    

是的,GoTo 不好。但这是一种古老的语言,GoTo 确实 有合法用途——这就是其中之一。如果你保持你的代码干净并且extract the loop body into its own procedure,那么使用它应该不会有任何可读性问题。

【讨论】:

    猜你喜欢
    • 2016-07-02
    • 2019-06-22
    • 2016-08-18
    • 2019-11-29
    • 1970-01-01
    • 2022-08-18
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    相关资源
    最近更新 更多