MyTetra Share
Делитесь знаниями!
Обработка ошибок VBA
Время создания: 16.03.2019 23:43
Текстовые метки: Обработка ошибок, VBA, Error, GoTo, Ошибки
Раздел: Разные закладки - VBA
Запись: xintrea/mytetra_db_adgaver_new/master/base/1513051689768zp70c8o/text.html на raw.githubusercontent.com

Обработка ошибок 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


Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования