Читаем VBA для чайников полностью

Чтобы обработчик ошибок не выполнялся, когда это не нужно, необходимо добавить перед началом программного кода обработчика ошибок оператор Exit, как показано выше в примере из подраздела "Использование оператора On Error". Если это процедура типа Sub, то используйте оператор Exit Sub, а для процедуры типа Function используйте Exit Function.

Сам по себе обработчик ошибок состоит из следующих компонентов:

* метка, показывающая, где начинается программный код обработчика ошибок;

* программный код, призванный определить тип возникшей ошибки;

* программный код, обрабатывающий ошибку;

* оператор, дающий указание продолжить выполнение основной части процедуры (необязательный компонент).

Для идентификации начала программного кода обработчика ошибок поместите в первой строке обработчика ошибок стандартную метку VBA (напомню, что метка представляет собой любое допустимое слово, за которым следует двоеточие). Как уже объяснялось выше, в случае возникновения ошибки этой метке должен передать управление оператор On Error. В следующем примере такой меткой является ThisIsTheErrorHandler:

* * *

ThisIsTheErrorHandler:

* * *

( здесь размещаются операторы обработчика ошибок)

* * *

End Sub

Программный код обработчика ошибок почти всегда размешают в самом конце процедуры, поэтому и в данном примере обработчик ошибок завершается оператором End Sub.

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

Как правило, при выяснении того, что произошло, используется объект Err VBA. Объект Err всегда доступен в любой VBA-программе. Его можно использовать сразу, без предварительного создания его экземпляра. В объекте Err VBA автоматически сохраняет информацию о последней из случившихся в программе ошибок. Вашей программе остается только выяснить значения свойств объекта Err, в частности значения свойств Number (Номер) и Description (Описание).

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

Sub ЕщеОдноСообщение()

On Error GoTo ПытаюсьДуматьНоНеВыходит

* * *

(склонные к ошибкам операторы )

Exit Sub

ПытаюсьДуматьНоНеВыходит:

Select Case Err.Number

Case 7 ' выход за пределы памяти

( обработка ошибки номер 7)

Case 11 ' деление на нуль

(обработка ошибки номер 11) .

... (и т.д.)

Case Else

( обработка всех остальных ошибок)

End Select

End Sub

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

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

* Попытка получить данные снова из того же или альтернативного источника.

* Изменение неподходящих данных на подходящие с одновременной записью в файл или выводом на экран сообщения о том, что для продолжения работы пришлось эти данные изменить.

Для эффективной работы со свойством Number нужно знать, каким именно ошибкам соответствуют возвращаемые этим свойством номера. Из-за недостатка места я не могу представить здесь соответствующий список. В некоторых VBA-приложениях - к ним относятся и приложения Office 97 - информация об ошибках, встречающихся чаше всего, имеется в разделе Trappable Errors (Распознаваемые ошибки) справки по VBA. Этот раздел можно найти, напечатав trappableerrors в поле ввода на вкладке Предметный указатель в окне справки. В справочной системе Office 2000 подобного раздела мне найти не удалось.

Даже если ваш программный код не может обработать какую-то ошибку или если вы просто не хотите утруждать себя, вы все равно можете не допустить появления стандартного сообщения VBA об ошибке, использовав свойство Description (Описание) объекта Err.

Следующий фрагмент программного кода отображает исключительно вежливое сообщение об ошибке, частью которого является строка, предоставленная свойством Description:

strМоеСообщение = "С сожалением сообщаю Вам, что " _

& "в эту в целом замечательную программу все же " _

& "вкралась ошибка. Как сообщает наш надежный " _

& "источник (VBA), причиной беспокойства является "

MsgBox strМоеСообщение & Err.Description

Перейти на страницу:

Все книги серии Для чайников

Похожие книги

1001 совет по обустройству компьютера
1001 совет по обустройству компьютера

В книге собраны и обобщены советы по решению различных проблем, которые рано или поздно возникают при эксплуатации как экономичных нетбуков, так и современных настольных моделей. Все приведенные рецепты опробованы на практике и разбиты по темам: аппаратные средства персональных компьютеров, компьютерные сети и подключение к Интернету, установка, настройка и ремонт ОС Windows, работа в Интернете, защита от вирусов. Рассмотрены не только готовые решения внезапно возникающих проблем, но и ответы на многие вопросы, которые возникают еще до покупки компьютера. Приведен необходимый минимум технических сведений, позволяющий принять осознанное решение.Компакт-диск прилагается только к печатному изданию книги.

Юрий Всеволодович Ревич

Программирование, программы, базы данных / Интернет / Компьютерное «железо» / ОС и Сети / Программное обеспечение / Книги по IT
C++
C++

С++ – это универсальный язык программирования, задуманный так, чтобы сделать программирование более приятным для серьезного программиста. За исключением второстепенных деталей С++ является надмножеством языка программирования C. Помимо возможностей, которые дает C, С++ предоставляет гибкие и эффективные средства определения новых типов. Используя определения новых типов, точно отвечающих концепциям приложения, программист может разделять разрабатываемую программу на легко поддающиеся контролю части. Такой метод построения программ часто называют абстракцией данных. Информация о типах содержится в некоторых объектах типов, определенных пользователем. Такие объекты просты и надежны в использовании в тех ситуациях, когда их тип нельзя установить на стадии компиляции. Программирование с применением таких объектов часто называют объектно-ориентированным. При правильном использовании этот метод дает более короткие, проще понимаемые и легче контролируемые программы. Ключевым понятием С++ является класс. Класс – это тип, определяемый пользователем. Классы обеспечивают сокрытие данных, гарантированную инициализацию данных, неявное преобразование типов для типов, определенных пользователем, динамическое задание типа, контролируемое пользователем управление памятью и механизмы перегрузки операций. С++ предоставляет гораздо лучшие, чем в C, средства выражения модульности программы и проверки типов. В языке есть также усовершенствования, не связанные непосредственно с классами, включающие в себя символические константы, inline-подстановку функций, параметры функции по умолчанию, перегруженные имена функций, операции управления свободной памятью и ссылочный тип. В С++ сохранены возможности языка C по работе с основными объектами аппаратного обеспечения (биты, байты, слова, адреса и т.п.). Это позволяет весьма эффективно реализовывать типы, определяемые пользователем. С++ и его стандартные библиотеки спроектированы так, чтобы обеспечивать переносимость. Имеющаяся на текущий момент реализация языка будет идти в большинстве систем, поддерживающих C. Из С++ программ можно использовать C библиотеки, и с С++ можно использовать большую часть инструментальных средств, поддерживающих программирование на C. Эта книга предназначена главным образом для того, чтобы помочь серьезным программистам изучить язык и применять его в нетривиальных проектах. В ней дано полное описание С++, много примеров и еще больше фрагментов программ.

Бьёрн Страуструп , Бьярн Страустрап , Мюррей Хилл

Программирование, программы, базы данных / Программирование / Книги по IT