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

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

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

Комбинации клавиш для отладки

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

Построчное выполнение кода (пошаговое) <F8>

Построчное выполнение кода без построчного выполнения отдельных процедур <Shift+F8>

Выполнение кода до точки вставки <Ctrl+F8>

Добавление точки останова <F9>

Удаление всех точек разрыва <Ctrl+Shift+F9>

Определение следующей инструкции, которая будет <Ctrl+F9> выполняться

Добавление контролируемого выражения <Shift+F9>

Выполнение отладочного кода или возвращение сведений об ошибке обращения к процедуре <Alt +F5>

Пошаговое выполнение отладочного кода или возвращение сведений об ошибке обращения к процедуре <Alt+F8>

Сделайте паузу!

Ключ к отладке программы кроется в режиме паузы VBA. Режим паузы - это временная остановка выполнения программы на некотором операторе в программном коде. Поскольку в этом случае программа еще ''живет", вы получаете возможность проверить текущие значения всех ее переменных. Кроме того, начиная с этого момента, вы получаете возможность использовать команды Step, чтобы продолжить выполнение программы в пошаговом режиме, по одному оператору за шаг, и наблюдать за соответствующими изменениями значений переменных при этом будет видно, получают переменные ожидаемые значения или нет.

Подробности такой работы с переменными и командами Step будут рассматриваться в этой главе позже.

На рис. 9.1 показан вид окна редактирования VBA-процедуры в режиме паузы. Если не считать желтой подсветки строки и стрелки на поле слева, указывающей на оператор, который должен выполняться следующим, то это окно редактора Visual Basic выглядит практически так же, как и при обычном редактировании программного кода.

Рис. 9.1. Процедура VBA в режиме паузы

На самом деле, в режиме паузы вы можете редактировать свой программный код прямо во время выполнения программы, внося изменения и добавляя совершенно новые строки программного кода по необходимости или по своему желанию. Это предусмотрено не для забавы - это очень удобное средство отладки, преимуществами которого нужно обязательно научиться пользоваться (подробнее об этом - ниже, в разделе "Добавление и редактирование программного кода в режиме паузы").

Вход в режим паузы

Имеется целый ряд возможностей для перевода программы в режим паузы, который можно сравнить со стоп-кадром анимации.

* Запуск программы сразу в режиме паузы с помощью команды Step Into (см. ниже раздел "Сквозь программу по шагам").

* Назначение точки останова строке программного кода. После того как программа при выполнении дойдет до оператора, с которым связана точка останова, выполнение прервется, и программа перейдет в режим паузы.

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

* Щелчок на кнопке Break (Пауза), выбор Run=Break из меню или нажатие комбинации клавиш <Ctrl +Break> во время выполнения программы. Используйте эту возможность для восстановления контроля над программой, которая по каким-то причинам не желает останавливаться сама. Никто не сможет предугадать, где при этом программа остановится, но зато после остановки у вас появится возможность увидеть, где это произошло.

* Создание контролируемых переменных типа Break When Value Is True (стоп при значении Истина) или Break When Value Changes (стоп при изменении значения). Тогда программа перейдет в режим паузы, как только значение контролируемой перемен1 ной станет равным True или как только ее значение изменится.

По-другому программа может перейти в режим паузы, когда возникает ошибка выполнения. VBA отображает диалоговое окно с описанием возникшей ошибки (рис. 9.2). В этом окне щелчок на кнопке End (Закончить) останавливает выполнение программы совсем, а щелчок на кнопке Debug (Отладка) переводит выполнение программы в режим паузы. На вкладке General (Общие) диалогового окна Tools=Options вам предоставляются некоторые возможности для выбора круга тех ошибок, появление которых должно останавливать выполнение программы.

Рис. 9.2. Диалоговое окно, сообщающее об ошибке выполнения

Размещение точек останова в программе

Если есть подозрение, что ошибка содержится в каком-то конкретном сегменте программного кода, поместите точку останова как раз перед этим сегментом. На рис. 9.3 видно, как редактор Visual Basic представляет точку останова на экране - в виде довольно жирной точки на полях в окне редактирования.

Рис. 9.3. При назначении точки останова редактор Visual Basic подсвечивает строку программного кода,

Вы читаете VBA для чайников
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату