В большинстве случаев при отладке проверяется логика выполнения процедуры, поэтому необходимо отслеживать порядок исполнения строк кода. Это особенно необходимо при проверке работы операторов If и Select. Для этого применяется особый режим выполнения программ - пошаговое выполнение, когда программа останавливается после исполнения каждой строки кода.
Существует два режима пошагового выполнения: Step Into (Тотальное пошаговое выполнение) и Step Over (Пошаговое выполнение с перешагиванием через процедуры). Оба режима позволяют пошагово выполнять весь код процедуры и отслеживать значения переменных и свойств.
Есть и различия между этими режимами. Если отлаживается процедура, которая вызывает другие процедуры, и вы не хотите их выполнять в пошаговом режиме, то используется режим Step Over. В этом режиме вызываемые процедуры выполняются в обычном режиме, а не пошагово. Если вы хотите просмотреть в пошаговом режиме и вызываемые процедуры, то применяется режим Step Into.
Обычно в пошаговом режиме выполняется не вся процедура. Чаще точка останова устанавливается в том месте кода процедуры, которое вызывает сомнение. Затем процедура выполняется, доходит до точки останова, останавливается, а далее применяется пошаговый режим. Покажем, как выполняется пошаговый режим на примере нашей процедуры Ошибка.
Удалите оператор Debug.Print из процедуры.
Установите точку останова в строке после оператора InputBox. Нажмите <F5>, чтобы начать выполнение процедуры.
Щелкните на кнопке Отмена в окне ввода. Вы вернетесь в окно редактора Visual Basic, так как процедура достигла точки останова. Следующий выполняемый оператор - оператор If. Надо проследить, как выполняется этот оператор. По логике, сейчас условное выражение в операторе If имеет значение True (Истина), и должен выполняться оператор вывода окна сообщения (о том, что процедура завершена).
Нажмите клавишу <F8>, чтобы перейти в пошаговый режим и выполнить следующий оператор. Заметьте, что после проверки условия оператора If процедура не стала выполнять оператор вывода окна сообщения, а перешла к пункту Else (рис. 12.8). Вот и найден оператор, который работает не так, как мы рассчитывали!
Рис. 12.8. В пошаговом режиме на выполняемый оператор указывает стрелка на индикаторной панели
Нажмите клавишу <F5>, чтобы продолжить выполнение процедуры в обычном режиме.