Excel. Трюки и эффекты. Алексей Гладкий
Чтение книги онлайн.

Читать онлайн книгу Excel. Трюки и эффекты - Алексей Гладкий страница 24

СКАЧАТЬ них реагировать.

      Перехват ошибок

      Для перехвата ошибок времени выполнения в VBA используется специальная инструкция On Error, вставляемая перед тем местом программы, в котором возможно возникновение ошибки. В распоряжение программиста предоставляются три разновидности этой инструкции:

      On Error GoTo Метка

      On Error Resume Next

      On Error GoTo 0

      Первый вариант инструкции On Error активизирует обработчик ошибок (см. подраздел об обработке перехваченных ошибок). При возникновении ошибки после этой инструкции выполнение программы продолжается с метки Метка.

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

      Третий вариант инструкции On Error отключает перехват ошибок обработчиком, находящимся в выполняемой процедуре или функции.

      Обработка перехваченных ошибок

      Если в программе используется инструкция вида On Error GoTo Метка, то при возникновении ошибки после этой инструкции выполнение программы продолжается с метки Метка. Программный код, который начинается с данной метки и заканчивается (обычно, но не всегда и не обязательно) инструкцией Resume, называется обработчиком ошибок. В обработчике ошибок программист помещает действия, которые либо исправляют ошибку, либо информируют о ней пользователя. В конец обработчика ошибок обычно помещается один из вариантов инструкции Resume:

      Resume [0]

      Resume Next

      Resume Метка

      При использовании Resume [0] выполнение программы продолжается с той инструкции, в которой произошла ошибка. Если использовать вариант Resume Next, то выполнение программы продолжается со следующей инструкции после той, в которой произошла ошибка. Использование же варианта Resume Метка позволяет продолжить выполнение программы с указанной после Resume метки.

      При обработке ошибок важно знать, что в распоряжении программиста всегда имеется глобальная ссылка с именем Err на объект ErrObject. Этот объект хранит подробную информацию о возникшей ошибке (номер ошибки, текст сообщения об ошибке и т. д.). В обработчике эту ссылку можно использовать для уточнения типа, источника ошибки, а также для получения других сведений.

      Ниже приведен пример функции с обработчиком ошибок (она пытается записать текст в файл на гибком диске А:):

      Function dhWriteToFloppy(strText As String) As Boolean

      ' Включение обработчика ошибок

      On Error GoTo ErrHandler

      ' Выполнение операций с дискетой

      Open «A:\Text.txt» For Output As 1

      Write #1, strText

      Close 1

      ' Действия выполнены успешно

      dhWriteToFloppy = True

      ExitFunc:

      ' Выход из функции до обработчика ошибок

      Exit Function

      ErrHandler:

      ' Закрытие файла, если его все-таки удалось открыть

      Close 1

      Dim strErrMessage As String

      ' СКАЧАТЬ