Чтобы отладить процедуру "вручную", даже если у вас есть определенные соображения о том, "где зарыта собака", необходимо просмотреть каждую строку кода. VBA, чтобы локализовать ошибку, предлагает несколько способов остановить выполнение процедуры в определенных точках кода. Это называется перевести процедуру в режим останова. Режим останова временно приостанавливает выполнение процедуры. В этом режиме можно проверить значения переменных и свойств, применить другие средства отладки. Режим останова позволяет выполнить следующие действия.
Редактировать код процедуры.
Просматривать значения переменных, свойств и выражений.
Изменять значения переменных и свойств.
Выполнять операторы Visual Basic в окне быстрого выполнения Immediate.
В нашей процедуре, как вы догадываетесь, ошибка как-то связана с оператором InputBox. Строка, содержащая этот оператор, хороший кандидат для того, чтобы после ее выполнения остановить процедуру. Место в коде программы, где остановится выполнение процедуры, называется точкой останова (breakpoint). Есть несколько способов пометить строку кода точкой останова.
Выберите строку кода и выполните команду Debug > Toggle Breakpoint (Отладка > Установка точки останова).
Выберите строку кода и нажмите клавишу <F9>.
Выберите строку кода и щелкните напротив этой строки на серой правой границе окна кода. (Эта серая граница называется индикаторной панелью окна кода.)
Если на экране отображается панель инструментов Edit (Редактирование) или панель Debug (Отладка), то выберите строку кода и щелкните на кнопке Toggle Breakpoint (Переключатель точки останова) одной или другой панели инструментов.
Точку останова можно установить только на строке, содержащей исполняемый код. В строке, содержащей неисполняемый код, установить точку останова нельзя. К неисполняемому коду относятся комментарии, операторы объявления переменных и констант, пустые строки. Когда на строке кода установлена точка останова, то она меняет цвет (в соответствии с текущими установками среды редактора Visual Basic), и на индикаторной панели напротив этой строки появляется большая точка (рис. 12.2).
Рис. 12.2. В окне кода точку останова найти нетрудно
Удалить точки останова можно точно теми же описанными выше способами, что и установить. Если в коде установлены несколько точек останова, чтобы удалить их все за один раз, выполните команду Debug > Clear All Breakpoint (Отладка > Удалить все точки останова) или нажмите комбинацию клавиш <Ctrl+Shift+F9>.
В нашей экспериментальной процедуре Ошибка точку останова надо установить после строки, содержащей оператор InputBox. Для этого выполните следующие действия.
Поместите текстовый курсор где-нибудь в строке, расположенной ниже строки, содержащей оператор InputBox.
Нажмите клавишу <F9>. Вы увидите, что строка изменила цвет и рядом на индикаторной панели появилась точка.
Конечно, можно установить больше одной точки останова - столько, сколько считаете нужным. Теперь выполним процедуру Ошибка и посмотрим, какой эффект произведет точка останова.
Выполните процедуру Ошибка.
В окно ввода введите свое имя и нажмите клавишу <Enter>. Появится окно редактора Visual Basic, где будет выделена строка, на которой установлена точка останова (рис. 12.3).
Рис. 12.3. Когда при выполнении процедура достигает точки останова, открывается окно редактора Visual Basic
Рис. 12.4. Быстрый просмотр значений переменных
Теперь процедура находится в режиме останова, и есть возможность узнать значение, которое в данный момент приняла переменная response. Самый простой путь сделать это - поместить указатель мыши на имя переменной. Появится маленькое окошко, показывающее текущее значение переменной (рис. 12.4). Таким же образом можно просмотреть значения других переменных и свойств, которые вас интересуют. Просмотр значений переменных - это самое наименьшее, что вы можете сделать для поиска и устранения ошибок.
Конечно, существуют и другие способы просмотра значений переменных и свойств. В следующем разделе мы познакомимся с окном Immediate, которое позволяет не только просматривать значения переменных и свойств, но и изменять их.