Шаг 143.
VBA в MSExcel.
Процедуры обработки ошибок и отладка программ. Перехват и обработка ошибок

    На этом шаге мы рассмотрим конструкции, используемые для перехвата и обработки ошибок.

    Из диалогового окна Microsoft Visual Basic видно, что каждая ошибка имеет свой код. В таблице 1 приведены коды наиболее часто встречаемых ошибок.

Таблица 1. Коды наиболее часто встречаемых ошибок
Код Сообщение
5 Приложение не запущено
6 Переполнение
7 Не хватает памяти
9 Индекс выходит за пределы допустимого диапазона
11 Деление на нуль
13 Несоответствие типа
18 Произошло прерывание, вызванное пользователем
52 Неправильное имя файла или идентификатор
53 Файл не найден
54 Неверный режим работы с файлом
55 Файл уже открыт
56 Ошибка ввода-вывода
61 Переполнение диска
68 Устройство недоступно
71 Диск не готов
72 Повреждена поверхность диска
335 Невозможен доступ к системным ресурсам
268 Истек срок действия данного файла. Программе требуется файл более новой версии
482 Ошибка принтера

    В идеале разрабатываемое приложение не должно никогда аварийно прерываться. В приложении следует создать средства перехвата любой возможной ошибки, обработать ее, выдать сообщение пользователю и обеспечить безаварийное продолжение работы приложения. Обычно конструкция перехвата ошибок имеет следующую структуру.

Инструкция On Error
Производит перехват ошибки. Устанавливает, что программа должна делать в случае появления ошибки.

Подпрограмма обработки ошибки
В этой подпрограмме определяется тип возникшей ошибки и устанавливается, что программа должна делать в зависимости от типа ошибки. Допустимы следующие синтаксисы.

    Синтаксис 1:

  On Error GoTo строка
Активизирует подпрограмму обработки ошибок, начало которой определяется обязательным аргументом строка, значением которого может быть либо метка строки, либо номер строки.

    Синтаксис 2:

  On Error Resume Next 
Указывает, что при возникновении ошибки происходит передача управления на инструкцию, непосредственно следующую за инструкцией, где возникла ошибка.

    Синтаксис 3:

  On Error GoTo 0
Отключает любой активизированный обработчик ошибок в текущей процедуре.

Инструкция Resume
Обеспечивает процедуре возможность продолжить работу после обработки ошибки. Допустимы следующие синтаксисы.

    Синтаксис 1:

  Resume 
После обработки ошибки управление передается той инструкции, в которой произошла ошибка.

    Синтаксис 2:

  Resume строка 
После обработки ошибки управление передается инструкции, определенной аргументом строка. Значением этого аргумента может быть любая метка строки или номер строки.

    Синтаксис 3:

  Resume Next 
После обработки ошибки управление передается инструкции, следующей за инструкцией, в которой произошла ошибка.

Инструкция Exit
Останавливает выполнение процедуры.

    Допустимые синтаксисы:

  Exit Sub 
  Exit Function 
  Exit Property

    На следующем шаге мы закончим изучение этого вопроса.




Предыдущий шаг Содержание Следующий шаг