我想为vba编写错误处理,将其定向到错误处理后将首先检查特定的错误,如果不匹配,它将根据Excel显示错误消息。
这是我的代码:
On Error GoTo ErrorHandl
ErrorHandl:
If Err.Number = 13 Then
MsgBox "Do that …", vbCritical
Exit Sub
Else
??????
我可以用问号代替什么,以便如果错误号不同于13,则excel将向我显示当前正在发生的另一个错误?
答案 0 :(得分:1)
这是通过Select Case:
获取自定义错误的一种可能方法。如果错误是数字11(除以0),那么它将给出自定义的MsgBox
。否则,它会根据系统的当前语言(我的语言是德语)给出一个带有Err.Number
和Err.Description
的标准代码:
代码:
Sub TestMe()
On Error GoTo TestMe_Error
Debug.Print 5 / 0
On Error GoTo 0
Exit Sub
TestMe_Error:
Select Case Err.Number
Case 11:
MsgBox "Division by null is not allowed on this planet!"
Case Else:
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure TestMe."
End Select
End Sub
如果需要多功能错误处理程序,则代码如下:
Sub TestMe()
On Error GoTo TestMe_Error
Debug.Print 5 / 0
On Error GoTo 0
Exit Sub
TestMe_Error:
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure TestMe."
End Sub
答案 1 :(得分:0)
您现在编写的代码是特定于错误号的。您还可以编写一个通用的错误处理程序
Sub test()
On error GoTo Errorhandler
'''
'Code
'''
Exit Sub
Errorhandler:
MSgbox "Warning: fatal error occured." & vbCr & vbCr "Error message:" & vbCr & Err.Description, vbcritical, "Error"
End Sub
无论出现哪个错误,它都会显示一个消息框,警告用户致命错误,然后显示VBE中显示的错误消息。
当然,您也可以指定错误代码,而不是将其设置为通用代码