【问题标题】:How to skip an iteration in FOR loop in uft如何在uft中跳过FOR循环中的迭代
【发布时间】:2016-04-12 12:04:47
【问题描述】:

我正在从外部 excel 工作表中导出两个工作表,sheet1 名为 Global,sheet2 名为 Data。

全局表包含登录详细信息,数据表包含多个输入。

我在数据表中有两行以上,想跳过该行(如果 pi=01)并运行数据表中的下一行。

代码:

case 51

if processindicator = 01 then 
ExitActionIteration
Else
"statement"
End If

但它正在跳过所有迭代而不是当前迭代

帮我解决这个问题并提前感谢

【问题讨论】:

    标签: excel for-loop iteration skip vba


    【解决方案1】:

    由于我们没有看到您的所有代码,因此很难判断。但也许下面的例子就是你要找的。基本上,它会从 1 变为 100,只是跳过数字 51:

    Public Sub TestSkippingOfAnIteration()
    
    Dim i As Long
    
    For i = 1 To 100
        If i = 51 Then i = i + 1
        Debug.Print i
    Next i
    
    End Sub
    

    如果这能解决您的问题,请告诉我。否则,请详细说明并发布您的所有相关代码。

    【讨论】:

    • ...Then Exit For。但话又说回来:为什么我要让For 从 1 运行到 100 而不是 99?毕竟,所有异常都被硬编码到 VBA 子中,而不是动态的。
    【解决方案2】:

    将条件代码包装在If 语句中:

    For i = 1 To 10
        ...
        If processIndicator <> 1 Then
            '// do whatever you want here
        End If
    Next
    

    或者(不建议这样做,因为它会降低可读性和逻辑性)使用GoTo 语句:

    For i = 1 To 10
        ...
        If processIndicator = 1 Then
            GoTo Skip_Line:
        Else
            '// do whatever you want here
        End If
        ...
    
    Skip_Line:
    Next
    

    【讨论】:

    • 第二种方式不需要提供Else。直接的End If至少会减少缩进。
    • 单行If 语句会更好,我只是这样写,试图让逻辑更清楚地说明如何在循环中导航。它不打算用作工作代码。
    猜你喜欢
    • 2021-11-15
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    • 2021-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多