重新启动最后读取行的循环

时间:2018-08-20 21:20:18

标签: excel loops vbscript msgbox

我正在运行一个循环以从Excel读取数据,并且当我收到错误消息时,脚本将停止并在vbAbortRetryIgnore中提供一个MsgBox选项。如果遇到错误,我希望能够使用“重试”按钮在停止的那一行的开头重新开始循环,或者跳过该行并使用“忽略”按钮转到下一行。

我的原始循环如下:

Sub Main
    subGoToScreen "DELP", "********", "0000000001"
    Dim rw
    TITLE = "DELP Script"
    rw = 2
    Do While oExcelObject.CountA(oExcelSheet.Rows(rw)) > 0
        subDoWork oExcelSheet.Rows(rw)
        rw = rw + 1
    Loop
End Sub

然后,如果我收到类似Len(rw.Cells(1).Value) < 8的错误,那么如果选择了“重试”,我想回到该行的第一个单元格,重新开始循环。如果选择“重试”,我将使用此循环:

Sub MainRetry
    Dim rw
    TITLE = "DELP Script"
    rw = oExcelSheet.Rows(rw).Cells(1)

    Do While oExcelObject.CountA(oExcelSheet.Rows(rw)) > 0
        subDoWork oExcelSheet.Rows(rw)
        rw = rw + 1
    Loop
End Sub

它不起作用,并给我一个运行时错误。有谁知道如何识别我正在阅读的当前行,记住该行并重新阅读该行或移至下一行?当前,如果没有第二循环,它将在rw.Cells(2).Value上重新开始阅读工作表。

1 个答案:

答案 0 :(得分:1)

这就是我的工作方式:

我定义了CurrentRowLastRow如下:

CurrentRow          = rw.Cells(8).Row
LastRow             = CurrentRow - 1

然后,我创建了两个新的子过程,一个用于处理重试,一个用于处理忽略,并将重试的起始点设置为rw = LastRow + 1,将忽略设置为rw = CurrentRow + 1,同时使用相同的子过程循环

Do While oExcelObject.CountA(oExcelSheet.Rows(rw)) > 0
    subDoWork oExcelSheet.Rows(rw)
    rw = rw + 1
Loop