Литмир - Электронная Библиотека

Интернет-журнал "Домашняя лаборатория", 2007 №7 - img_133

Рис. 3.21. Сообщение об ошибке из-за неправильного использования команд VBA

В последнем диалоговом окне, как можно видеть, есть кнопка под названием "Отладка". Нажав на нее, можно перейти в режим отладки программы — то есть специального состояния Редактора Visual Basic for Applications, в котором программа может исполняться построчно, а программист имеет возможность видеть значения всех переменных программы и даже принудительно задавать эти значения. Также в режим отладки можно перейти из Редактора VBA, поставив курсор внутрь программы и нажав клавишу F8.

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

В режиме отладки программисту доступны следующие возможности:

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

2. Просмотр значений переменных. Подведя в режиме отладки курсор к имени любой переменной, можно увидеть ее значение (рис. 3.22).

Рис. 3.22. Просмотр значения переменной в режиме отладки

Кроме того, значения всех переменных программы можно увидеть в окне Локальные переменные (Local Window), рис. 3.23.

Рис. 3.23. Окно локальных переменных.

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

3. Точки останова. Если программа длинная, то проходить по всем ее строчкам с помощью кнопки F8 — занятие не слишком интересное и приятное. В этом случае лучше использовать точки останова: то есть отметки в тексте программы, где ее исполнение должно остановиться, а сама программа — перейти в режим отладки. Для установки точки останова нужно щелкнуть левой кнопкой мыши на сером левом поле окна модуля, и тогда появится коричневая строка с кружочком на месте точки останова (рис. 3.24).

Интернет-журнал "Домашняя лаборатория", 2007 №7 - img_136

Рис. 3.24. Точка останова.

Начиная с этого места, программа будет выполняться пошагово по нажатию кнопки F8. Отказаться от пошагового выполнения можно путем нажатия кнопки F5. Точки останова полезны, когда нужно локализовать дающее ошибку место в программе, особенно если оно находится в середине текста или не единичное.

4. Окно контрольного значения (Watch Window). В этом окне можно задать определенное выражение, значение которого будет подсчитываться параллельно с выполнением программы. Кроме того, выделив в режиме отладки какое-нибудь выражение и нажав Shift и F9, можно увидеть его значение, а также добавить это выражение в окно контрольного значения и отслеживать его дальнейшие изменения.

Такая возможность необходима, например, при отладке длинной программы с множеством арифметических выражений, одно из которых дает ошибку. С помощью этого окна можно отследить, когда, при изменении какого параметра значение выражения станет неприемлемым. К примеру, идет вычисление оптимального количества учеников в каждом классе с учетом множества параметров и где-то подозревается наличие ошибки: не сходится сумма количеств всех учеников во всех классах с количеством учеников в школе. Можно, конечно, обойтись без всяких там окон контрольного значения и вставить в текст программы после каждого вычисления проверку равенства суммы количества всех учеников во всех классах с численностью учеников школы, но это очень усложнит программу, да и потом придется удалять все эти добавления, — а если программа большая, то сделать это не так просто. Гораздо лучше поставить контрольное значение — сумму количеств всех учеников во всех классах — и при пошаговом исполнении программы отследить, где, на каком этапе происходит ее ненужное изменение.

5. Окно проверки или Отладки (Immediate Window). Это окно вызывается из меню Вид — Окно отладки. В текст программы можно вставить специальные команды — Debug.Print (а+b, например). Тогда при выполнении этой команды в Окно отладки будет печататься то, что задано в ее параметрах (рис. 3.25).

Рис. 3.25. Окно отладки.

Возможности применения этого окна многообразны. Можно выводить в него сообщения в случае выполнения какого-либо условия. Можно отображать в нем промежуточные результаты вычислений для контроля их правильности — чтобы не смотреть и искать нужное выражение в окнах Локальных переменных или Контрольного значения, а получать их сразу, перед глазами. Можно даже использовать это окно как маленький калькулятор или командную строку (рис. 3.26), и тогда при нажатии Enter после ввода команды она будет тут же выполнена! Надо только перед самой командой писать слово Print, если команда должна выдать какой-нибудь результат в этом же окне.

Рис. 3.26. Калькулятор в окне отладки

6. Стек вызова (Call Stack). В этом окне отображается структура программы, состоящей из нескольких подпрограмм — процедур или функций, а также показывается, какие переходы возможны между этими подпрограммами. Если программа сложная и большая, то разобраться, какая подпрограмма вызывает ту или иную другую подпрограмму, достаточно трудно, — для этого и стоит использовать Стек вызова, в котором все вызовы подпрограмм друг друга наглядно изображены.

Окна Контрольного значения, Локальных переменных, Отладки и Стека вызова могут быть вызваны как из меню Вид или соответствующими сочетаниями клавиш, так и при нажатии кнопок на панели "Отладка". Достаточно только подвести курсор к каждой кнопке панели, чтобы увидеть, какую команду она вызывает.

Во время работы макрокоманды ее можно прервать в любой момент нажатием клавиш Ctrl и Break. После этого будет возможен переход в режим отладки с места остановки или завершение программы.

Для выхода из режима отладки до завершения полного выполнения программы необходимо выбрать функцию Сброс из меню Запуск или нажать на панели "Отладка" кнопку "Сброс".

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

И помните, что Вы можете всегда получить подробную справку по любой команде, поставив на нее курсор и нажав клавишу F1.

240
{"b":"870523","o":1}