Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование VBA.pdf
Скачиваний:
374
Добавлен:
03.05.2015
Размер:
3.07 Mб
Скачать

126

Теперь необходимо выполнить процедуру Ошибка и посмотреть, какой эффект произведет точка останова.

1.Выполнить процедуру Ошибка.

2.В окно ввода ввести свое имя и нажать клавишу Enter. Появится окно редактора Visual Basic, где будет выделена строка, на которой установлена точка останова:

Теперь процедура находится в режиме останова, и есть возможность узнать значение, которое в данный момент приняла переменная response. Самый простой путь сделать это – поместить указатель мыши на имя переменной. Появится маленькое окошко, показывающее текущее значение переменной: response = “МАРИЯ”

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

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

3.1.1.2. Использование окна Immediate

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

Задать значения переменных и свойств.

127

Изменить значения переменных и свойств.

Увидеть результат отладочных действий.

Вызвать на исполнение любую процедуру.

Ввести новые операторы и сразу их выполнить. Это позволяет экспериментировать с различными вариантами кода процедуры.

Копировать и вставлять фрагменты кода процедуры в окно Immediate и сразу их выполнять.

3.1.1.2.1. Просмотр значений в окне Immediate

Как было показано ранее, можно просмотреть текущие значения переменных в режиме останова, поместив указатель мыши на имя переменной. Другой путь просмотра значений переменных и свойств – окно Immediate. Для этого также предусмотрено несколько способов. Во-первых, в окне Immediate можно ввести слово Print (Печать) или знак вопроса (?), а затем – имя переменной или свойства. Во-вторых, можно ввести непосредственно в процедуру оператор Debug.Print, который будет показывать в окне Immediate значения заданных переменных. Ниже рассмотрены оба эти способа.

Сначала испробуем способ со словом Print (или что то же самое, со знаком вопроса).

1.Если процедура Ошибка все еще находится в режиме останова, нужно привести её в исходное состояние, выполнив команду Run > Reset (Выполнить > Восстановить) или щелкнув на кнопке Reset

стандартной панели инструментов.

2.Начать выполнение процедуры, нажав клавишу F5. В окне ввода щёлкнуть на кнопке Отмена. Поскольку при выполнении процедуры достигнута точка останова, то откроется редактор VBA.

3.Если в окне редактора отсутствует окно Immediate, нажать комбинацию клавиш <Ctrl+G>. Откроется окно Immediate. Его также можно открыть с помощью команды View > Immediate Window (Вид > Окно

Immediate).

4.Чтобы узнать значение переменной response, щёлкнуть в окне

Immediate и ввести ?response (между знаком ? и словом response

не должно быть пробела!).

5.Нажать клавишу Enter. В следующей строке окна Immediate появится значение переменной response. В данном случае эта переменная имеет значение False:

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

128

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

1.В окне Immediate ввести строчку response = ""

2.Нажать клавишу Enter. Теперь переменная response имеет значение пустой строки.

3.Нажать клавишу F5, чтобы продолжить выполнение процедуры. На экран будет выведено диалоговое окно:

4.Щёлкнуть на кнопке ОК в окне сообщения для завершения процедуры.

Впредыдущем примере для получения доступа к окну Immediate была установлена точка останова, которая переводила процедуру в режим останова. Но если по каким-либо причинам нет необходимости останавливать выполнение процедуры, но нужно знать значения переменных или свойств во время выполнения, то необходимо использовать оператор Debug.Print. Этот оператор вставляется непосредственно в код процедуры и выводит соответствующий текст в окно Immediate во время ее выполнения. Чтобы воспользоваться этим оператором в процедуре Ошибка, нужно проделать следующее.

1.Выполнить команду Debug > Clear All Breakpoints для удаления всех точек останова из процедуры.

2.Удалить текст из окна Immediate.

3.Измените код процедуры следующим образом (изменения выделены полужирным шрифтом):

Public Sub Ошибка_2() Dim response

response = Application.InputBox("Введите свое имя")

Debug.Print "Значение response: " & response

If response = " " Then

MsgBox "Процедура завершена" Exit Sub

Else

MsgBox "Ваше имя - " & response. End If

End Sub

4.Нажав клавишу F5, начать выполнение процедуры.

5.Ввести имя в окне ввода и нажать клавишу Enter.

6.Щёлкнуть на кнопке OK для закрытия окна сообщения.