Как было показано ранее, можно просмотреть текущие значения переменных в режиме останова, поместив указатель мыши на имя переменной. Другой путь просмотра значений переменных и свойств - окно Immediate. Для этого также предусмотрено несколько способов. Во-первых, в окне Immediate можно ввести слово Print (Печать) или знак вопроса (?), а затем - имя переменной или свойства. Во-вторых, можно ввести непосредственно в процедуру оператор Debug.Print, который будет показывать в окне Immediate значения заданных переменных. Ниже мы рассмотрим оба эти способа.
Сначала испробуем способ со словом Print (или, что то же самое, со знаком вопроса).
Если процедура Ошибка все еще находится в режиме останова, приведите ее в исходное состояние, выполнив команду Run > Reset (Выполнить > Восстановить) или щелкнув на кнопке Reset стандартной панели инструментов.
Начните выполнение процедуры, нажав клавишу <F5>. В окне ввода щелкните на кнопке Отмена. Поскольку при выполнении процедуры достигнута точка останова, то откроется редактор Visual Basic.
Если в окне редактора вы не видите окно Immediate, нажмите комбинацию клавиш <Ctrl+G>. Откроется окно Immediate. Его также можно открыть с помощью команды View > Immediate Window (Вид > Окно Immediate).
Чтобы узнать значение переменной response, щелкните в окне Immediate и введите ? response.
Нажмите клавишу <Enter>. В следующей строке окна Immediate появится значение переменной response. В данном случае эта переменная имеет значение False (рис. 12.6).
Для вывода значения переменной или свойства можно ввести слово Print или знак вопроса - результат будет одинаков.
Если вы хотите выполнить оператор, который был ранее введен в окно Immediate (например, оператор Print для просмотра значений), установите курсор в строку с этим оператором и нажмите <Enter>.
Выше мы упоминали, что в окне Immediate можно не только просмотреть значения переменных, но и задавать эти значения. Это позволяет проверить логику выполнения программы. В нашей процедуре оператор If должен вывести соответствующее окно сообщения, если переменная response имеет значение пустой строки. Но как это проверить? Для этого достаточно в окне Immediate ввести следующую строчку:
response = ""
Нажмите клавишу <Enter>. Теперь переменная response имеет значение пустой строки.
Нажмите клавишу <F5>, чтобы продолжить выполнение процедуры. Вы должны увидеть долгожданное окно с сообщением о том, что процедура завершена.
Щелкните на кнопке ОК в окне сообщения для завершения процедуры.
Рис. 12.6. Просмотр значения переменной в окне Immediate
В предыдущем примере для получения доступа к окну Immediate мы установили точку останова, которая переводила процедуру в режим останова. Затем получали в полное распоряжение окно Immediate. Но если по каким-либо причинам вы не хотите останавливать выполнение процедуры, но хотите знать значения переменных или свойств во время выполнения, то необходимо использовать оператор Debug.Print. Этот оператор вставляется непосредственно в код процедуры и выводит соответствующий текст в окно Immediate во время ее выполнения. Чтобы воспользоваться этим оператором в процедуре Ошибка, сделайте следующее.
Выполните команду Debug > Clear All Breakpoints для удаления всех точек останова из процедуры.
Удалите текст из окна Immediate.
Измените код процедуры следующим образом (изменения выделены полужирным шрифтом):
Public Sub Ошибка()
Dim response
response = Application.InputBox("Введите свое имя")
Debug.Print "Значение response: " & response
If response = " " Then
MsgBox "Процедура завершена"
Exit Sub
Else
MsgBox "Ваше имя - " & response.
End If
End Sub
Нажав клавишу <F5>, начните выполнение процедуры.
Введите свое имя в окне ввода и нажмите клавишу <Enter>.
Щелкните на кнопке OK для закрытия окна сообщения.
Снова выполните процедуру.
В окне ввода щелкните на кнопке Отмена, а затем на кнопке OK, чтобы закрыть последующее окно сообщения.
Вернитесь в редактор Visual Basic.
В окне Immediate вы увидите две строки текста (рис. 12.7). Первая строка появилась во время первого выполнения процедуры, вторая – при повторном выполнении.
Рис. 12.7. Оператор Debug.Print пишет историю изменения значения переменной