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

Excel. Трюки и эффекты - Алексей Гладкий


Скачать книгу
перехваченных ошибок

      Если в программе используется инструкция вида 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

      ' Идентификация ошибки и формирование текста сообщения

      Select Case Err.Number

      Case 71

      strErrMessage = «Нет диска в дисководе»

      Case 70

      strErrMessage = «Диск защищен от записи»

      Case 61

      strErrMessage = «Нет места на диске»

      Case Else

      strErrMessage = Err.Description

      End Select

      ' Отображение сообщения об ошибке

      MsgBox strErrMessage, vbExclamation, «Ошибка»

      ' Продолжение выполнения программы

      dhWriteToFloppy = False

      Resume ExitFunc

      End Function

      Если запись удается, то функция возвращает значение True. Если возникает ошибка, то выдается соответствующее сообщение, после чего функция возвращает значение False. На примере функции dhWriteToFloppy следует заметить, что при нормальном выполнении программы (без возникновения ошибок) обработчик ошибок выполняться не должен, что достигается выходом из функции до обработчика с помощью инструкции Exit Function.

      Классы в VBA

      Язык программирования VBA является объектно-ориентированным, хотя и не поддерживает наследование и полиморфизм. VBA-программист может работать с встроенными классами, а также создавать и использовать свои собственные классы.

      Создание


Скачать книгу