簡體   English   中英

Excel VBA錯誤處理不適用於第二個錯誤

[英]Excel VBA error handling not working for second error

在下面的代碼中,當我輸入未打開的工作簿或任何隨機字符串時, Errorhandler正確處理第一個錯誤。 但是,當我單擊“重試”並再次輸入一個隨機名稱Subscript out of Range出現“下Subscript out of Range ”錯誤@ Workbooks(workbookname)。 啟用。

誰能幫助我為什么會這樣以及如何使它工作。 我已經嘗試了很多東西。 但是沒有任何效果。 此代碼是較大程序的一部分。

Sub test()

Dim workbkname As String
On Error GoTo Errorhandler
Retry:

workbookname = InputBox("Enter workbook name:", _
                        "Name Enrty")
If StrPtr(workbookname) = 0 Then
    MsgBox ("Aborting Program")
    End
End If

Workbooks(workbookname).Activate
Exit Sub

Errorhandler:
Response = MsgBox("Workbook " & workbookname & " not found", vbRetryCancel)
If Response = 4 Then
    GoTo Retry

End If

End Sub

這里的問題是,一旦給出了GoTo類的指令,VBA錯誤處理程序就不會清除錯誤。 結果,代碼認為它在您的錯誤處理例程中遇到了錯誤,因此將錯誤拋出堆棧。

為了清除錯誤,您必須調用Resume並將其恢復(一個單獨的Resume可以再次運行錯誤代碼, Resume Next可以恢復錯誤后的代碼行,或者可以調用Resume加上一個標簽,如下:

Sub ErrTest
    On Error Goto ErrHndl
    For i = 0 to 5
        a = 1/i
nextiLabel:
    Next i

    Exit Sub
ErrHndl:
    Resume nextiLabel
End Sub

您也可以使用Err.Clear()消除錯誤,但是不建議這樣做。

有關更多信息,請參見此處: Excel中的錯誤處理

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM