Ознакомление с процедурами VBA, предотвращающими появление ошибок

Лабораторная работа № 9

 

Цель работы: разработка процедур в VBA, предотвращающих появление ошибок

Задание на выполнение работы: создать программный код VBA, предотвращающий появление ошибок

Порядок выполнения работы:

 

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

Рассмотрим пользовательскую форму ( рисунок 1):

Рисунок 1. Диалоговое окно Деление»

 

В диалоговом окне поля «Числитель» и «Знаменатель» предусмотрены для ввода данных. Пользователь вводит в них по числу. При нажатии кнопки «Счет» программа делит число, введенное в поле «Числитель» на число, введенное в поле «Знаменатель» и выводит полученный результат в поле «Ответ».

Несмотря на простоту задачи, она уже таит в себе множество подводных камней. Например, если пользователь по невнимательности забудет ввести в поля числа, при нажатии кнопки «Счет» происходит аварийное прерывание программы с малопонятным сообщением об ошибке ( рисунок 2).

Рисунок 2. Сообщение об ошибке VBA

 

Данное сообщение об ошибке связано с одной из инструкций в программе:

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

Такие ошибки ввода легко избежать, если производить в программе предварительную проверку: преобразуются ли вводимые данные в числа. Например, на рисунке 3 в поле «Знаменатель» было введено число с точкой-разделителем целой и дробной части, в то время как установки системы предусматривают запятую.

Рисунок 3. Пример сообщения о некорректном вводе данных

 

Поэтому процедура:

вызвала отображение диалогового окна «Деление» с сообщением об ошибке в знаменателе и установила фокус на поле «Знаменатель».

Если пользователь введет в поле «Знаменатель» нуль, то в этом случае также произойдет аварийная остановка программы. Для этого нужно провести проверку не только того, являются ли введенные данные числом, но и что это не ноль. Окончательная процедура выглядит так:

На рисунке 4 показан пример выдачи сообщения об ошибке в случае введения нуля в окно «Знаменатель».

Рисунок 4. Пример сообщения об ошибке в случае введения нуля в окно «Знаменатель».

 

Отчет должен содержать:

1. Задание на выполнение работы

2. Листинги программ с процедурами, предотвращающими появление ошибок

3. Выводы

Контрольные вопросы:

Опишите методику оповещения пользователя об ошибке программы в VBA