Ознакомление с процедурами VBA, предотвращающими появление ошибок
Лабораторная работа № 9
Цель работы: разработка процедур в VBA, предотвращающих появление ошибок
Задание на выполнение работы: создать программный код VBA, предотвращающий появление ошибок
Порядок выполнения работы:
При составлении приложений важно предусмотреть, чтобы программа анализировала возможные ошибки, возникающие при ее выполнении и информировала пользователя о них.
Рассмотрим пользовательскую форму ( рисунок 1):
Рисунок 1. Диалоговое окно Деление»
В диалоговом окне поля «Числитель» и «Знаменатель» предусмотрены для ввода данных. Пользователь вводит в них по числу. При нажатии кнопки «Счет» программа делит число, введенное в поле «Числитель» на число, введенное в поле «Знаменатель» и выводит полученный результат в поле «Ответ».
Несмотря на простоту задачи, она уже таит в себе множество подводных камней. Например, если пользователь по невнимательности забудет ввести в поля числа, при нажатии кнопки «Счет» происходит аварийное прерывание программы с малопонятным сообщением об ошибке ( рисунок 2).
Рисунок 2. Сообщение об ошибке VBA
Данное сообщение об ошибке связано с одной из инструкций в программе:
где аргументом функции CDbl должна быть строка, преобразуемая в число. Если в какое-либо из полей ничего не введено, по умолчанию из этого поля будет считываться пустая строка, которая не может быть преобразована в число и поэтому из-за функции CDbl происходит ошибка.
Такие ошибки ввода легко избежать, если производить в программе предварительную проверку: преобразуются ли вводимые данные в числа. Например, на рисунке 3 в поле «Знаменатель» было введено число с точкой-разделителем целой и дробной части, в то время как установки системы предусматривают запятую.
Рисунок 3. Пример сообщения о некорректном вводе данных
Поэтому процедура:
вызвала отображение диалогового окна «Деление» с сообщением об ошибке в знаменателе и установила фокус на поле «Знаменатель».
Если пользователь введет в поле «Знаменатель» нуль, то в этом случае также произойдет аварийная остановка программы. Для этого нужно провести проверку не только того, являются ли введенные данные числом, но и что это не ноль. Окончательная процедура выглядит так:
На рисунке 4 показан пример выдачи сообщения об ошибке в случае введения нуля в окно «Знаменатель».
Рисунок 4. Пример сообщения об ошибке в случае введения нуля в окно «Знаменатель».
Отчет должен содержать:
1. Задание на выполнение работы
2. Листинги программ с процедурами, предотвращающими появление ошибок
3. Выводы
Контрольные вопросы:
Опишите методику оповещения пользователя об ошибке программы в VBA