как получить подробности ошибки в программировании VBA? - PullRequest
0 голосов
/ 02 марта 2020

Как получить подробности об ошибке, такие как номер строки, сообщение об ошибке в VBA. Он отображает простое сообщение типа «Ошибка компиляции», но не отображает подробности и номер строки ошибки.

Ответы [ 3 ]

2 голосов
/ 02 марта 2020

Как получить подробности об ошибке, такие как номер строки , сообщение об ошибке в VBA.

Compile error не позволит вам скомпилировать код и непосредственно приведет вас к строке, в которой есть ошибка. Для других ошибок во время выполнения вам нужно добавить номера строк к вашему коду и затем использовать ERL, чтобы получить номер строки . Например,

Option Explicit

Sub Sample()
      Dim i As Long

10    On Error GoTo Whoa

20    i = "Sid"

30    Debug.Print i

Whoa:
40    MsgBox Err.Description & ". Error on line " & Erl
End Sub

enter image description here

Совет : я использую MZ-Tools , который помогает при вставке / удаление номеров строк. Я думаю (я не уверен) rubberduck также делает это.

0 голосов
/ 02 марта 2020

Ошибка компиляции отличается от ошибки времени выполнения.

Ошибка компиляции не позволяет приложению собираться и запускаться, и выделяется строка кода, которая вызывает ошибку. С другой стороны, ошибка времени выполнения - это когда приложение запускается, но происходит что-то неожиданное, что вызывает ошибку, деление на ноль для проверки.

Как только вы разобрались с ошибкой компиляции и запустили приложение, вы можете обработать Ошибки типа rutime:

Option Explicit

Sub Something()
    On Error GoTo Trap

    'your code here

Leave:
    On Error GoTo 0
    Exit Sub

Trap:
    MsgBox Err.Number & " - " & Err.Description, vbCritical
    Resume Leave
End Sub
0 голосов
/ 02 марта 2020

Если ваш код VBA не содержит номеров строк, то VBA не сможет его отобразить.

Цель отображения номера строки состоит в том, чтобы отследить и устранить ошибку, которую можно обработать, используя:

On Error GoTo ErrHandler

А затем блок обработчика ошибок

ErrHandler:

См. это .

...