Каммингс Стив
Шрифт:
Чтобы совсем прекратить выполнение программы, используйте команду Reset
(Остановить выполнение). Для этого можно использовать кнопку Reset или пункт Reset меню
Run. Нажатие <A!t+F4> останавливает выполнение вообще любой программы в Windows, в том числе и VBA-программ. Но прежде чем нажать <Alt+F4>, убедитесь, что вы выполняете свою
VB А-программу, потому что в противном случае закроется либо редактор Visual Basic, либо ваше
VBA-приложение, либо какая-то другая программа Windows, оказавшаяся активной в тот момент.
Как и все хорошие отладчики, редактор Visual Basic дает возможность выполнять программу по шагам, по одному оператору за шаг. Такое замедление- просто находка для тех случаев, когда появляется подозрение на наличие логических ошибок, имеющих привычку прятаться в укромных местах программ.
Чтобы использовать все преимущества пошагового выполнения программы, желательно видеть, как в процессе выполнения программы изменяются значения переменных. В этом всегда готово помочь чудесное средство редактора Visual Basic, называемое Auto Data Tips (Автоматические подсказки значений), но еще более подробная информация предоставляется в окнах Locals (Окно локальных переменных) и Watches (Окно контролируемых выражений), которые к тому же позволяют при необходимости изменить значения представленных в них элементов. Все эти возможности будут обсуждаться ниже.
Начнем же, пожалуй, стрех команд Step редактора Visual Basic, а именно: Step Into.
Step Over и Step Out. Все три доступны либо через меню Debug, либо с помощью кнопок панели инструментов Debug, либо следующих комбинаций клавиш.
Step Into <F8>
Step Over <Shift+F8>
Step Out <Ctrl+Shift+F8>
Команда Step Into (Войти в процедуру) используется, если нужно выполнить процедуру по шагам в порядке естественного выполнения операторов. Каждый раз, когда применяется эта команда, VBA выполняет следующий оператор программы и снова переходит в режим паузы, чтобы вы имели возможность увидеть произошедшие при этом изменения. Удобнее всего вызывать команду Step Into нажатием клавиши <F8>.
Свое название эта команда получила из-за того, что при ее использовании происходит вход в любую из вызываемых в программе процедур: если следующим оператором оказывается вызов процедуры типа Sub или Function, то применение команды Step Into приведет к открытию вызванной процедуры в окне редактирования, чтобы вы могли пройти эту процедуру по шагам и увидеть все, что происходит.
Команда Step Into доступна не только в режиме паузы. Если нужно выполнить программу по шагам с самого начала, запустите ее с помощью команды
Step Into. В таком случае команда Step Into начинает выполнение с той процедуры, в которой оказывается текстовый курсор, причем процедура всегда выполняется с самой первой строки.
Команда Step Over (Обойти процедуру) вызывается клавишами <Shift+F8> и работает подобно команде Step Into, но со следующими двумя отличиями:
* при вызове процедуры команда Step Over не приводит к пошаговому выполнению вызываемой процедуры;
* с помощью команды Step Over нельзя начать выполнение программы в режиме паузы.
Если оператор, который должен выполняться следующим, вызывает некоторую процедуру, команда Step Over выполнит эту процедуру без перерывов, целиком, сделав сразу все имеющиеся в процедуре глупости и не дав вам проверить промежуточные результаты. Обход процедур очень экономит время, когда вы уверены, что вызываемая процедура работает так, как нужно.
Команда Step Out (Выйти из процедуры) вызывается клавишами <Ctrl+Shift+F8> и прекрасно дополняет команду Step Over. После входа в процедуру в режиме ее пошагового выполнения вы можете решить, что все в порядке или что ошибка найдена и исправлена.
Или, намереваясь щелкнуть на кнопке Step Over, вы можете случайно щелкнуть на кнопке Step Into лично у меня такое происходит регулярно).
В любом из таких случаев нет необходимости проходить по шагам оставшуюся часть процедуры. Чтобы пройти остаток с полной скоростью, используйте команду Step Out.
VBA быстро доставит вас в ту процедуру, из которой вы пришли, подсветив оператор, следующий за оператором с вызовом процедуры.
Основные приемы отладки
В режиме паузы поток выполнения программы не рассматривается как нечто "замороженное" только потому, что программа выполняется. VBA оказывается достаточно сообразительным, чтобы позволить вносить коррективы прямо по ходу дела. В частности, в режиме паузы можно редактировать программный код и изменять порядок, в котором должны выполняться операторы.
Добавление и редактирование программного кода в режиме паузы
Все возможности окна редактирования программного кода остаются в силе и в режиме паузы. Вы имеете возможность печатать новые операторы и редактировать или удалять уже имеющиеся. И главное, в большинстве своем эти изменения сработают незамедлительно, став частью выполняемой программы. Так, вы можете объявлять переменные, чтобы сразу же использовать их в вычислениях в комбинации с уже существующими переменными программы.