- •Что такое Visual Basic for Applications
- •Автоматизация среды Excel
- •Запись простого макроса
- •Выполнение макросов
- •Просмотр кода макроса
- •Редактирование кода макроса
- •Упражнение
- •Назначение макросам комбинаций клавиш
- •Ограниченность макросов
- •Вопросы и ответы
- •Практикум
- •Где хранить макросы
- •Создание личной книги макросов
- •Сохранение макросов в личной книге макросов
- •Выполнение макросов из личной книги макросов
- •Редактирование макросов в личной книге макросов
- •Удаление макросов из личной книги макросов
- •Назначение макросов командным кнопкам
- •Назначение макроса графическим изображениям
- •Назначение макросов кнопкам панелей инструментов
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Введение в процесс разработки приложений
- •Кто будет использовать приложение
- •Откуда будут поступать данные для приложения
- •Где и как будут храниться данные, полученные с помощью приложения
- •Как данные будут обрабатываться приложением
- •Вид выходных данных
- •Типы элементов управления
- •Вставка элементов управления в рабочий лист
- •Форматирование элементов управления
- •Имена элементов управления
- •Экранные формы
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Модуль: дом для кода vba
- •Обзор процедур
- •Создание процедур
- •Выполнение процедуры
- •Сохранение изменений в модуле
- •Переменные
- •Типы данных
- •Объявление переменных
- •Соглашения об именах переменных
- •Массивы
- •Присвоение значений переменным
- •Использование констант
- •Область видимости переменных и констант
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Функция MsgBox
- •Функция InputBox
- •Метод InputBox
- •Именование аргументов
- •Объединение текстовых строк
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Управление выполнением приложения
- •Оператор If
- •Оператор Select Case
- •Использование встроенных диалоговых окон Excel
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Оператор For…Next
- •Оператор Do... Loop
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Что такое объект
- •Объекты, свойства и методы
- •Объектная модель Excel
- •Пять наиболее часто используемых объектов
- •Как понимать иерархию объектной модели
- •Ссылка на объекты в коде vba
- •Работа с объектами
- •Задание свойств объекта
- •Использование методов
- •Справочная информация о свойствах и методах
- •Переменные-объекты
- •1: Sub ПримерПеремОбъекта()
- •Коллекции
- •Метод Add
- •Свойство Count
- •1: Sub КоличРабЛистов()
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Объект Application
- •Использование встроенных функций Excel
- •Свойства и методы объекта Application
- •Объект Workbook
- •Объект Worksheet
- •Упражнение
- •Описание объекта Range
- •Вопросы и ответы
- •Практикум
- •Свойства объекта Range
- •Методы объекта Range
- •Использование оператора With
- •Оператор For Each
- •Использование объекта Range
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Панели инструментов
- •Просмотр кода
- •Использование справочной системы
- •Просмотр объектов
- •Параметры редактора Visual Basic
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Тестирование и отладка как этап разработки приложений
- •Отладка
- •Режим останова
- •Использование окна Immediate
- •Просмотр значений в окне Immediate
- •Пошаговое выполнение программ
- •Наблюдение за переменными
- •Исправление ошибок
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Понятие об обработке ошибок
- •Перехват ошибок
- •Написание процедуры обработки ошибся
- •Выход из обработчика ошибок
- •Пример обработчика ошибок
- •Централизованный обработчик ошибок
- •Вопрос и ответы
- •Практикум
- •Упражнение
- •Вставка экранных форм в приложения
- •Свойства экранной формы
- •Выполнение экранной формы
- •Вставка элементов управления в экранную форму
- •Свойства элементов управления
- •Свойства командных кнопок
- •Свойства переключателей
- •Блокировка элементов управления
- •Экранные подсказки к элементам управления
- •Задание порядка обхода элементов формы
- •Назначение быстрых клавиш элементам формы
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Инициализация значений экранной формы
- •Вызов экранной формы
- •Управление поведением формы
- •Проверка вводимых данных
- •Сохранение данных, введенных в форму
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Настройка панелей инструментов
- •Создание панелей инструментов
- •Процедуры, управляющие панелями инструментов
- •Создание панели инструментов
- •Удаление панели инструментов
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Способы изменения меню
- •Программная работа с меню
- •Добавление пунктов и команд меню
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Создание диаграмм
- •Запись макроса построения диаграмм
- •Код макроса
- •Изменение кода макроса
- •Усовершенствованная процедура построения диаграмм
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Работа со сводной таблицей
- •Основы сводных таблиц
- •Запись макроса для создания сводной таблицы
- •Исследование кода макроса
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Базы данных, доступные из Excel
- •Средства доступа к внешним данным
- •Использование ms Query
- •Код записанного макроса
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Что такое ado
- •Объекты доступа к базам данных
- •Использование ado
- •Создание ссылки на библиотеку ado
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Вставка полей в экранную форму
- •Перемещение по записям
- •Редактирование данных
- •Добавление средства поиска
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Что такое автоматизация
- •Основы автоматизации
- •Ссылка на библиотеку объектов приложения-сервера
- •Просмотр библиотеки объектов
- •Создание экземпляра приложения-сервера
- •Использование объектов Microsoft Word
- •Вопросы и ответы
- •Практикум
- •Упражнение
- •Автоматическое выполнение процедур
- •Процедуры, выполняемые при наступлении событий
- •Создание надстроек Excel
- •Упражнение
- •Приложение. Ответы Ответы к 1-му часу Тесты
- •Ответы ко 2-му часу Тесты
- •Ответы к 3-му часу Тесты
- •Ответы к 4-му часу Тесты
- •Упражнение
- •Ответы к 5-му часу Тесты
- •Упражнение
- •Ответы к 6-му часу Тесты
- •Упражнение
- •Ответы к 7-му часу Тесты
- •Упражнение
- •Ответы к 8-му часу Тесты
- •Упражнение
- •Ответы к 9-му часу Тесты
- •Упражнение
- •Ответы к 10-му часу Тесты
- •Упражнение
- •Ответы к 11-му часу Тесты
- •Упражнение
- •Ответы к 12-му часу Тесты
- •Упражнение
- •Ответы к 13-му часу Тесты
- •Упражнение
- •Ответы к 14-му часу Тесты
- •Ответы к 15-му часу Тесты
- •Упражнение
- •Ответы к 16-му часу Тесты
- •Упражнение
- •Ответы к 17-му часу Тесты
- •Упражнение
- •Ответы к 18-му часу Тесты
- •Упражнение
- •Ответы к 19-му часу Тесты
- •Упражнение
- •Ответы к 20-му часу Тесты
- •Упражнение
- •Ответы к 21-му часу Тесты
- •Упражнение
- •Ответы к 22-му часу Тесты
- •Упражнение
- •Ответы к 23-му часу Тесты
- •Упражнение
- •Ответы к 24-му часу Тесты
- •Упражнение
Использование окна Immediate
Окно быстрого выполнения Immediate, показанное в нижней части рис. 12.5, предоставляет доступ ко всем переменным и свойствам, используемым в процедуре. С помощью этого окна можно решать различные задачи, включая следующие.
-
Задать значения переменных и свойств.
-
Изменить значения переменных и свойств.
-
Увидеть результат отладочных действий.
-
Вызвать на исполнение любую процедуру.
-
Ввести новые операторы и сразу их выполнить. Это позволяет экспериментировать с различными вариантами кода процедуры.
-
Копировать и вставлять фрагменты кода процедуры в окно Immediate и сразу их выполнять.

Рис. 12.5. Окно Immediate обычно располагается под окном кода
Просмотр значений в окне Immediate
Как было показано ранее, можно просмотреть текущие значения переменных в режиме останова, поместив указатель мыши на имя переменной. Другой путь просмотра значений переменных и свойств - окно 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 пишет историю изменения значения переменной
