logo
Predmet

85Обработка ошибок выполнения. Поиск ошибок в программе. Обработка ошибок vba

Для обработки ошибок в VBA и VB есть специальный оператор On Error. Он задает, куда будет передано управление в случае ошибки. Приведу пример: Sub ErrorHandling()   On Error GoTo ErrorHandler    Dim a As Integer    Dim x As Integer    Dim y As Double    a = 20    x = 0    y = a / x    MsgBox ("Это сообщение никогда не появится")    GoTo Ends: ErrorHandler:   MsgBox ("Ошибка деления на ноль") Ends: End Sub

В этом примере при возникновении ошибки управление передается к метке ErrorHandler и выводится сообщение об ошибке. Если нужно вернуться из обработчика ошибки назад, в точку, где выполнение было прервано, используется оператор Resume Next: Sub ErrTest()   On Error GoTo ErrorHandler   Dim a As Integer   Dim x As Integer   Dim y As Double   a = 20   x = 0   y = a / x   MsgBox ("Процедура выполненяется дальше")   GoTo Ends: ErrorHandler:   MsgBox ("Ощибка деления на ноль !")   Resume Next Ends: End Sub

В некоторых случаях прерывать выполнение программы нежелательно даже при возникновении ошибок. В таких ситуациях можно сделать так: Sub ManyBugs()   On Error Resume Next   Dim a As Integer   Dim x As Integer   Dim y As Double   a = 30   x = 0   y = a / x   a = 20   x = 5   y = 8 / 6   MsgBox ("Никто ничего не заметил ;)") End Sub