Мое решение следующее:
On Error GoTo {PROCEDURE_NAME}_Error
{PROCEDURE_BODY}
On Error GoTo 0
Exit {PROCEDURE_TYPE}
{PROCEDURE_NAME}_Error:
debug.print "#" & Err.Number, Err.description, "l#" & erl, "{PROCEDURE_NAME}", "{MODULE_NAME}"
<час> Этот код стандартной погрешности может быть затем автоматически добавлен ко всем Вашим procs и функции путем нажатия на соответствующую кнопку в меню MZ-Tools. Вы заметите, что мы обращаемся здесь к скрытой и недокументированной функции в стандартной библиотеке VBA, 'Эрл', который обозначает 'ошибочную строку'. Вы получили его! Если Вы попросите, чтобы MZ-инструменты автоматически пронумеровали Ваши строки кода, то 'Эрл' затем даст Вам количество строки, где ошибка произошла. У Вас будет полное описание ошибки в Вашем непосредственном окне, таком как:
#91, Object variable or With block variable not set, l# 30, addNewField, Utilities
, Конечно, после того как Вы понимаете интерес системы, можно думать о более сложном обработчике ошибок, который не только отобразит данные в окне отладки, но будет также:
подразумевать, что каждая ошибка, сгенерированная на уровне пользователя, может быть сохранена или в файле или в таблице, где-нибудь на машине или сети. Мы говорим приблизительно [1 115] здание автоматизированная система сообщения об ошибке работа с VBA?
Что относительно того, чтобы использовать "Эрл", это отобразит последнюю маркировку перед ошибкой (например, 10, 20, или 30)?
Private Sub mySUB()
On Error GoTo Err_mySUB
10:
Dim stDocName As String
Dim stLinkCriteria As String
20:
stDocName = "MyDoc"
30:
DoCmd.openform stDocName, acFormDS, , stLinkCriteria
Exit_mySUB:
Exit Sub
Err_mySUB:
MsgBox Err.Number & ": " & Err.Description & " (" & Erl & ")"
Resume Exit_mySUB
End Sub
Хорошо существует несколько инструментов, которые сделают то, что Вы спрашиваете Инструменты MZ и , FMS Inc приходит на ум.
В основном они включают добавление:
On Error GoTo ErrorHandler
к вершине каждого proc и в конце они помещают:
ErrorHandler:
Call MyErrorhandler Err.Number, Err.Description, Err.LineNumber
маркировка с обычно вызовом к глобальному обработчику ошибок, где можно отобразить и зарегистрировать пользовательские сообщения об ошибках