Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Макросы.doc
Скачиваний:
28
Добавлен:
21.11.2018
Размер:
16.91 Mб
Скачать

Пошаговое выполнение программ

В большинстве случаев при отладке проверяется логика выполнения процедуры, поэтому необходимо отслеживать порядок исполнения строк кода. Это особенно необходимо при проверке работы операторов If и Select. Для этого применяется особый режим выполнения программ - пошаговое выполнение, когда программа останавливается после исполнения каждой строки кода.

Существует два режима пошагового выполнения: Step Into (Тотальное пошаговое выполнение) и Step Over (Пошаговое выполнение с перешагиванием через процедуры). Оба режима позволяют пошагово выполнять весь код процедуры и отслеживать значения переменных и свойств.

Есть и различия между этими режимами. Если отлаживается процедура, которая вызывает другие процедуры, и вы не хотите их выполнять в пошаговом режиме, то используется режим Step Over. В этом режиме вызываемые процедуры выполняются в обычном режиме, а не пошагово. Если вы хотите просмотреть в пошаговом режиме и вызываемые процедуры, то применяется режим Step Into.

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

  1. Удалите оператор Debug.Print из процедуры.

  2. Установите точку останова в строке после оператора InputBox. Нажмите <F5>, чтобы начать выполнение процедуры.

  3. Щелкните на кнопке Отмена в окне ввода. Вы вернетесь в окно редактора Visual Basic, так как процедура достигла точки останова. Следующий выполняемый оператор - оператор If. Надо проследить, как выполняется этот оператор. По логике, сейчас условное выражение в операторе If имеет значение True (Истина), и должен выполняться оператор вывода окна сообщения (о том, что процедура завершена).

  4. Нажмите клавишу <F8>, чтобы перейти в пошаговый режим и выполнить следующий оператор. Заметьте, что после проверки условия оператора If процедура не стала выполнять оператор вывода окна сообщения, а перешла к пункту Else (рис. 12.8). Вот и найден оператор, который работает не так, как мы рассчитывали!

Рис. 12.8. В пошаговом режиме на выполняемый оператор указывает стрелка на индикаторной панели

  1. Нажмите клавишу <F5>, чтобы продолжить выполнение процедуры в обычном режиме.

Наблюдение за переменными

Visual Basic предлагает еще один способ отслеживания значений переменных и свойств, который называется наблюдением за выражениями. Наблюдаемые выражения (watch expressions) - это любые определенные пользователем выражения Visual Basic, позволяющие просматривать значения многих переменных или выражений. Конечно, наблюдаемые выражения должны быть корректными с точки зрения языка VBA.

Существует три режима наблюдения за выражениями, которые задаются выбором соответствующих переключателей в диалоговом окне Add Watch (Добавление наблюдаемых выражений) (рис. 12.9).

  • Режим Watch Expression (Наблюдаемое выражение) - отслеживаются значения заданных выражений без всякого влияния на ход выполнения приложения.

  • Режим Break When Value Is True (Останов, если значение истинно) - выполнение процедуры приостанавливается, если наблюдаемое выражение принимает значение True.

  • Режим Break When Value Changes (Останов, если значение изменилось) - выполнение процедуры приостанавливается, если наблюдаемое выражение изменило свое значение.

Используем в качестве наблюдаемого выражения переменную response.

  1. Удалите из процедуры все точки останова.

  2. Выделите имя переменной response в процедуре Ошибка.

  3. Выполните команду Debug > Add Watch (Отладка > Добавить наблюдаемое выражение), чтобы открыть диалоговое окно Add Watch (рис. 12.9).

Рис. 12.9. В этом диалоговом окне задаются режимы наблюдения за выражениями

  1. Поскольку в процедуре выделено слово response, то оно автоматически появится в поле Expression (Выражение) диалогового окна Add Watch. He изменяйте установки в секции Context (Состояние), где задано, из какой процедуры какого модуля наблюдается переменная (другими словами, здесь задается область видимости наблюдаемого выражения).

  2. Установите переключатель Break When Value Changes.

  3. Щелкните на кнопке ОК.

Если хотите быстро создать наблюдаемое выражение, выделите нужное выражение (например, имя переменной) в окне кода и выполните команду Debug > Quick Watch (Отладка > Быстрое наблюдение) либо нажмите комбинацию клавиш <Shift+F9>. Наблюдение в этом случае будет проводиться в режиме Watch Expression, т.е. без вмешательства в ход выполнения процедуры.

  1. Нажмите <F5> для начала выполнения процедуры.

  2. Щелкните на кнопке Отмена в окне ввода. Процедура перейдет в режим останова, так как переменная response изменила свое значение. В редакторе Visual Basic появится окно Watches (Наблюдение), показывающее значение переменной response (рис. 12.10).

  3. Нажмите <F5> для продолжения выполнения процедуры.

Рис. 12.10. Окно Watches показывает значения всех наблюдаемых выражений

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

  1. Выполните команду Debug > Edit Watch (Отладка > Редактирование наблюдаемых выражений). Откроется диалоговое окно Edit Watch (рис. 12.11).

  2. Так как у нас только одна наблюдаемая переменная, то в поле Expression будет выделено слово response. Щелкните на кнопке Delete (Удалить), и наблюдение за переменной будет отменено.

Рис. 12.11. Это окно используется для редактирования и удаления наблюдаемых выражений