Вход/Регистрация
VBA для чайников
вернуться

Каммингс Стив

Шрифт:

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

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

Можно разместить столько точек останова в разных строках программы, сколько вы сочтете необходимым. Нельзя только размещать точки останова в строках комментариев и строках с операторами, которые VBA на самом деле не выполняет, например в строках с объявлениями переменных.

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

Удаление точек останова

Исправив ошибки в программном коде или отказавшись на время от попыток их исправления, вы захотите удалить ненужные точки останова. Удаление точек останова даст возможность VBA при следующем запуске выполнять программу без лишних задержек. Удаляется существующая точка останова точно так же, как и ставится - щелчком на полях в окне редактирования или нажатием клавиши <F9>.

Чтобы удалить все назначенные точки останова сразу, выберите из меню Debug=Clear All

Breakpoints или нажмите <Ctrl+Shift+F9>. Точки останова моментально уйдут в историю - никакая команда Undo (Отменить) не поможет вам восстановить их.

Выяснение места остановки

Когда программа находится в режиме паузы, редактор Visual Basic подсвечивает оператор, который предполагается выполнить следующим. Для гарантии на полях около строки с этим оператором в окне редактирования программного кода появляется стрелка. То, что вы увидите, показано на рис. 9.4 (но чтобы представить его в цвете, пожалуй, без фантазии не обойтись).

Рис. 9.4. Не заметить строку с оператором, который должен будет выполняться следующим, просто невозможно (тем более, что эта строка обязательно будет на экране)

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

Здесь поможет специально предусмотренная для такого случая команда Show Next Statement (Показать следующий оператор). Выберите Debug=Show Next Statement, и редактор Visual Basic быстренько доставит вас к нужному оператору. Есть также команда, позволяющая выбрать в качестве следующего другой оператор, но она будет обсуждаться позже, в подразделе "Назначение другого следующего оператора".

Альтернатива точкам останова: оператор Stop

Точки останова использовать очень просто, но они имеют один недостаток: они временны. Если отлаживаемая программа достаточно сложна, скорее всего, вам не удастся привести ее в полный порядок за один раз. Точки останова не сохраняются в программном коде, поэтому, открыв проект в редакторе Visual Basic в следующий раз, вы их уже не увидите.

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

Желаете пример, господа? Извольте:

* * *

intДанныеCMapca = ПолучениеДанныхСМарса(1.5454)

Stop

MsgBox "Результат " & intДанныеCMapca /Z

* * *

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

Когда вы достаточно насладитесь режимом паузы (по крайней мере на этот раз), дайте указание VBA продолжить нормальное выполнение программы. Для этого используются команды, находящиеся на тех же местах, что и команды для первоначального запуска программы. В режиме паузы соответствующие пункт меню Run (Выполнить) и кнопка панели инструментов со своих мест никуда не денутся, но изменят свои названия - они будут теперь называться Continue (Продолжить). По-прежнему клавишным эквивалентом для вызова соответствующей команды будет <F5>. Продолжая выполнение, программа может снова перейти в режим паузы, если доберется до следующей точки останова или возникнут иные условия, при которых активизируется режим паузы.

  • Читать дальше
  • 1
  • ...
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: