VBA - Goto Excel сообщение об ошибке при обработке ошибок, если - PullRequest
0 голосов
/ 12 июня 2019

Я хотел написать обработку ошибок для vba, которая после обращения к обработке ошибок сначала проверит наличие конкретной ошибки и, если совпадений не будет, отобразит сообщение об ошибке в соответствии с Excel.

Вот мой код:

On Error GoTo ErrorHandl

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

Что я мог бы написать вместо знаков вопроса, чтобы, если номер ошибки отличался от 13, Excel показал мне другую ошибку, которая происходит в настоящее время?

Ответы [ 2 ]

1 голос
/ 12 июня 2019

Это возможный способ получить пользовательские ошибки с Select Case:.Если ошибка - число 11 (Деление на 0), то это дает настроенное значение MsgBox.В противном случае он дает стандартный с Err.Number и Err.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
0 голосов
/ 12 июня 2019

Код, который вы написали сейчас, зависит от номера ошибки.Вы также можете написать общий обработчик ошибок

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.

Конечно, вы также можете указать код ошибки вместо общего

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...