Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование VBA.pdf
Скачиваний:
374
Добавлен:
03.05.2015
Размер:
3.07 Mб
Скачать

123

3.1. Тестирование и отладка как этап разработки приложений

Тестирование – это процесс выполнения процедуры и исследование всех аспектов ее работы. Цель тестирования – проверить правильность результатов выполнения процедуры и ее реакцию на разнообразные действия пользователя. Если во время работы процедуры получены неверные результаты вычислений, непредвиденная реакция на те или иные действия пользователя, либо вообще произошла остановка выполнения, то это говорит о том, что код процедуры имеет ошибки.

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

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

синтаксические ошибки,

ошибками выполнения,

логические ошибки.

Синтаксические ошибки. Это ошибки, связанные с неправильным форматом кода. По умолчанию редактор Visual Basic отслеживает синтаксические ошибки в коде процедур после нажатия клавиши Enter. Это полезное средство, но при желании его можно отключить (или восстановить), удалив (или установив) флажок опции Auto Syntax Check (Автоматическая проверка синтаксиса) на вкладке Editor (Редактор) диалогового окна Options (Параметры).

Ошибки выполнения (runtime error). Это такие ошибки, которые приводят к остановке выполнения приложения. Например, введено имя объекта с ошибкой. VBA может обнаружить такую ошибку только во время выполнения программы. Ошибки выполнения также могут быть реакцией на действия пользователя, которые не предусмотрены в программе, например, на ввод некорректного значения аргумента функции, которая вы создана.

Логические ошибки (logic error). VBA не может отследить такой тип ошибок, так как в этом случае обычно нет грамматических и синтаксических ошибок в написании операторов, т.е. нарушена логика выполнения операторов.

3.1.1.Отладка

Процесс локализации и исправления ошибок называется отладкой (debugging). Для этих целей можно использовать функцию MsgBox и специальные средства отладки.

Функцию MsgBox можно использовать для вывода значений переменных в любом месте процедуры, чтобы контролировать изменение переменных в процессе выполнения процедуры. В процессе отладки можно последовательно выявлять ошибки, и чтобы ускорить процесс отладки можно “нейтрализовать” выполнение функции MsgBox, помещая перед ней символ “одиночная кавычка” ( ' ), превращая тем самым строку кода в при-

124

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

Кспециальным средствам отладки VBA относятся:

окно быстрого выполнения Immediate,

наблюдение за значениями переменных,

точки останова,

пошаговое выполнение кода.

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

1.Закрыть все открытые книги.

2.Открыть новую рабочую книгу.

3.Нажать комбинацию клавиш <Alt+F11> для открытия редактора

Visual Basic.

4.Вставить модуль в текущую рабочую книгу.

5.Создать новую процедуру и назвать её, например, Ошибка.

6.Ввести код этой процедуры

Sub Ошибка() Dim response

response = Application.InputBox("Введите ваше имя") If response = "" Then

MsgBox "Процедура завершена" Exit Sub

Else

MsgBox "Ваше имя - " & response End If

End sub

7.Выполнить процедуру. В окне ввода ввести ваше имя и нажать клавишу Enter. Появится окно сообщения, содержащее введённое имя. Итак, пока процедура работает как надо.

1.Щёлкнуть на кнопке ОК для закрытия окна сообщения.

8.Нажать F5 для повторного выполнения процедуры.

9.В окне ввода щёлкнуть на кнопке Отмена. на экран будет выведено следующее диалоговое окно:

В диалоговом окне получено сообщение Ваше имя False! Но должны были получить Процедура завершена!

125

10. Щёлкнуть на кнопке ОК для удаления окна сообщения.

Итак, процедура работает неправильно. Она определенно содержит ошибку, но как найти эту ошибку? На примере этой процедуры рассмотрим различные методы отладки.

3.1.1.1. Режим останова

Чтобы отладить процедуру "вручную", необходимо просмотреть каждую строку кода. В VBA для локализации ошибки имеется несколько способов остановить выполнение процедуры в определенных точках кода.

Это называется перевести процедуру в режим останова. Режим останова временно приостанавливает выполнение процедуры. В этом режиме можно проверить значения переменных и свойств, применить другие средства отладки. Режим останова позволяет выполнить следующие действия.

Редактировать код процедуры.

Просматривать значения переменных, свойств и выражений.

Изменять значения переменных и свойств.

Выполнять операторы Visual Basic в окне быстрого выполнения

Immediate.

Врассматриваемой процедуре ошибка как-то связана с оператором InputBox. Поэтому после его выполнения следует остановить процедуру. Место в коде программы, где остановится выполнение процедуры, называется точкой останова (breakpoint). Есть несколько способов пометить строку кода точкой останова.

Выбрать строку кода и выполнить команду Debug > Toggle Breakpoint (Отладка > Установка точки останова).

Выбрать строку кода и нажать клавишу F9.

Точку останова можно установить только на строке, содержащей исполняемый код. В строке, содержащей неисполняемый код, установить точку останова нельзя. К неисполняемому коду относятся комментарии, операторы объявления переменных и констант, пустые строки. Когда на строке кода установлена точка останова, то она меняет цвет (в соответствии с текущими установками среды редактора VBA).

Удалить точки останова можно точно теми же описанными выше способами, что и установить. Если в коде установлены несколько точек останова, чтобы удалить их все за один раз, нужно выполнить команду Debug > Clear All Breakpoint (Отладка > Удалить все точки останова) или нажать комбинацию клавиш <Ctrl+Shift+F9>.

В процедуре Ошибка точку останова надо установить после строки, содержащей оператор InputBox. Для этого нужно выполнить следующие действия.

Поместить текстовый курсор где-нибудь в строке, расположенной ниже строки, содержащей оператор InputBox.

Нажать клавишу F9. Строка изменит цвет.

Можно установить больше одной точки останова.