Установка ловушек для ошибок в VBA осуществляется с помощью оператора On Error. В процедуре может быть только одна ловушка для ошибок. Но это не означает, что в процедуре возможен только один оператор On Error. Если в процедуре несколько операторов On Error, то на самом деле все равно должен выполняться только один из них.
Есть два различных способа обработки ошибок. В первом способе инструкция, указывающая, что делать при возникновении ошибки, является частью оператора On Error. В VBA предусмотрены два таких оператора.
В случае ошибки управление снова передается оператору, при выполнении которого возникла ошибка.
В случае ошибки управление передается оператору, следующему за тем оператором, при выполнении которого возникла ошибка.
Для блокировки обработчика ошибок применяется оператор On Error GoTo 0, который располагается после оператора On Error. Блокировка обработчика ошибок полезна при тестировании приложения, когда вы для чистоты эксперимента не хотите задействовать процедуру обработки ошибок.
Первый способ обработки ошибок не является рекомендуемым или предпочтительным, так как ошибки здесь не обрабатываются, а просто игнорируются. Второй способ обработки ошибок использует оператор On Error для перехода к процедуре, где действительно происходит обработка ошибки. Это дает значительную гибкость в реагировании на различные типы ошибок.
Во втором способе используется оператор On Error GoTo строка, где строка - это метка (line label) в строке кода процедуры, начиная с которой располагается код обработчика ошибок. Метка представляет собой имя, заканчивающееся двоеточием, что отличает ее от других идентификаторов языка VBA. Листинг 13.1 показывает структуру процедуры, содержащую обработчик ошибок.