VBA-错误时转到goto excel错误消息

时间:2019-06-12 12:39:19

标签: vba

我想为vba编写错误处理,将其定向到错误处理后将首先检查特定的错误,如果不匹配,它将根据Excel显示错误消息。

这是我的代码:

On Error GoTo ErrorHandl

ErrorHandl:
If Err.Number = 13 Then
  MsgBox "Do that …", vbCritical
  Exit Sub
Else
??????

我可以用问号代替什么,以便如果错误号不同于13,则excel将向我显示当前正在发生的另一个错误?

2 个答案:

答案 0 :(得分:1)

这是通过Select Case:获取自定义错误的一种可能方法。如果错误是数字11(除以0),那么它将给出自定义的MsgBox。否则,它会根据系统的当前语言(我的语言是德语)给出一个带有Err.NumberErr.Description的标准代码:

enter image description here

代码:

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中显示的错误消息。

当然,您也可以指定错误代码,而不是将其设置为通用代码