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.59
Яндекс индекс цитирования