我正在运行一个循环以从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
上重新开始阅读工作表。
答案 0 :(得分:1)
这就是我的工作方式:
我定义了CurrentRow
和LastRow
如下:
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