[英]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.