Почему Err.Description остается пустым в обработке ошибок Excel / VBA? - PullRequest
1 голос
/ 20 апреля 2020

Я не могу получить доступ к описанию ошибки (или номеру ошибки) в обработке ошибок Excel VBA. Если я запускаю следующий код, описание ошибки остается Empty:

Option Explicit

Sub TestError()

    On Error GoTo ErrorHandler

    Debug.Print 1 / 0
    'Alternative: (Does not display error number either):
    'Err.Raise 10000, , "Some error description"

ErrorExit:

    Exit Sub

ErrorHandler:

    On Error Resume Next
    MsgBox Err.Description
    Resume ErrorExit

End Sub


Err.Description not available with error handling

Если я замените Debug.Print 1 / 0 на оператор Err.Raise, описание также останется пустым. Однако, если я удалю On Error GoTo ErrorHandler, описание и номер ошибки будут отображаться, как и ожидалось.

Err.Description without error handler

Что я делаю не так? Есть ли другой способ получить доступ к описанию ошибки? Спасибо!

1 Ответ

3 голосов
/ 20 апреля 2020

Единственная проблема здесь - это наличие оператора On Error внутри подпрограммы обработки ошибок: когда этот код выполняется, уже слишком поздно говорить VBA, что делать «при ошибке»: он здесь , потому что произошла ошибка.

Просто удалите строку On Error Resume Next, и все будет в порядке go!


Однако, если я удалите On Error GoTo ErrorHandler, описание и номер ошибки будут отображаться, как и ожидалось.

То, что вы видите, является необработанной ошибкой времени выполнения, а не MsgBox, который вы ожидаете.

...