Отладка и тестирование программ
Итак, нам необходимо нажать клавишу F8 и посмотреть, чему стало равно значение tsk.startDate. Как и следовало ожидать, переменной было присвоено значение 21.08.01. (текущая дата 21 августа 2001 года). Следовательно, функция Now работает корректно.
Далее мы попадаем на следующую точку останова – присваивание значения переменной tsk.DueDate. После очередного нажатия клавиши F8 проверим значения текущих переменных и окончательно обнаружим ошибку.
Значение переменной duration равно 5, прибавляя его к значению текущей даты, мы прибавляем не месяцы (как хотелось бы), а дни. Исправим эту ошибку, изменив код ошибочной строки на следующий:
.DueDate = DateAdd("m", duration, .StartDate)Замечание
Встроенная функция DateAdd предназначена для добавления или вычитания из даты указанного числа временных интервалов.
В конце рассказа об отладчике мы решили на рис. 22.10 показать панель инструментов Отладка (Debug) с кнопками, используемыми при отладке, а в табл. 22.1 привести краткую справку по всем использованным и неиспользованным средствам отладчика.

Рис. 22.10. Кнопки панели Отладка
Таблица 22.1. Средства отладчика.
| Команда | Назначение |
|---|---|
| Compile | Компиляция программы |
| Run Sub/UserForm | Запуск процедуры или формы |
| Break | Прерывание выполнения программы CTRL + Break |
| Reset | Остановка выполнения программы |
| Toggle Breakpoints | Установить точку останова |
| Clear All Breakpoints | Снять все точки останова |
| Step Into | Шаг с заходом во вспомогательные процедуры |
| Step Over | Шаг с обходом вспомогательных процедур |
| Step Out | Шаг с выходом из вспомогательной процедуры |
| Step to Cursor | Шаг до курсора. Запускает программу на выполнение до строки с курсором |
| Set Next Statement | Позволяет устанавливать следующий выполняемый оператор |
| Show Next Statement | Показывает следующий выполняемый оператор |
| Immediate Window | Отображает окно отладочных результатов вычисления |
| Locals Window | Отображает окно локальных переменных процедуры |
| Watch Window | Отображает окно контрольных выражений программы |
| Add Watch | Добавляет выражение в окно Watch |
| Edit Watch | Исправляет выражение в окне Watch |
| Quick Watch | Просматривает значение выделенного выражения |
| Call Stack | Позволяет показать стек вызовов процедур в текущий момент. Эта кнопка очень полезна при работе с рекурсивными процедурами |
| Comment Block | Позволяет закомментировать выделенный блок операторов |
| Uncomment Block | Отменяет сделанные комментарии |
| Toggle Bookmarks | Устанавливает закладку |
| Clear All Bookmarks | Снимает все установленные закладки |
| Find | Вызывает диалоговое окно поиска, посредством которого можно найти ту или иную переменную, выражение и т. д. |
К сожалению, не все приемы отладки можно рассмотреть на нашем простейшем примере.
