- •Что такое 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-му часу Тесты
- •Упражнение
Вызов экранной формы
Вы еще не думали о том, как вызвать на экран форму во время выполнения приложения или просто из рабочего листа? Вот самый простой способ вызова экранной формы из окна рабочей книги: надо написать простенькую процедуру, вызывающую экранную форму, а затем назначить эту процедуру какому-либо объекту в окне рабочей книги, например командной кнопке, кнопке панели инструментов или просто пункту меню.
В следующем 16-м часе "Панели инструментов" мы подробно рассмотрим методы работы с панелями инструментов, а в 17-м часе "Работа с меню" - методы работы с меню.
Ранее (в начале книги) мы уже рассматривали способы назначения элементам интерфейса макросов и процедур. Поэтому с назначением какой-нибудь кнопке панели инструментов процедуры, вызывающей экранную форму, у вас не должно быть проблем. А вызывающая процедура может состоять только из одной строки:
frmGuestExpenses.Show
Метод Show загружает экранную форму в память компьютера и выводит ее на экран. Для создания такой процедуры выполните следующее.
-
Перейдите в редактор Visual Basic (если вы находитесь не в нем) и вставьте новый модуль в рабочую книгу.
-
Создайте новую процедуру и назовите ее ЗагрузкаФормы.
-
Введите код процедуры
frmGuestExpenses.Show
-
Перейдите в рабочую книгу на Лист1 и вставьте в этот рабочий лист командную кнопку.
Для вставки в рабочий лист командной кнопки надо отобразить панель инструментов Формы.
-
Когда откроется диалоговое окно Назначить макрос объекту, выберите в списке Имя макроса пункт ЗагрузкаФормы.
-
Задайте название командной кнопке Карточка гостевых расходов и щелкните вне кнопки, чтобы снять с нее выделение.
-
Щелкните на этой командной кнопке. Откроется наша форма. Отметьте, что списки Типы расходов и Типы карт заполнены, как и поле Дата.
-
Закройте форму.
Итак, вызов экранной формы осуществляется с помощью метода Show. В следующих главах книги созданную здесь процедуру ЗагрузкаФормы мы будем использовать для назначения ее кнопке панели инструментов и пункту меню.
Управление поведением формы
Процедура, выводящая форму на экран, создана. Теперь надо подумать о том, как форма будет себя вести на экране, т.е. продумать реакцию ее элементов на различные события, вызываемые действиями пользователя. Например, при установке флажка Включить в группе элементов Дополнительно надо снять блокировку с поля ввода сумму. Надо также снять блокировку с полей, принимающих информацию о кредитной карте, если выбран переключатель Кредитная карта. За подобные действия должна отвечать процедура, вызываемая событием Change (Изменить). Это событие генерируется всякий раз, когда изменяется значение свойства Value (Значение) какого-либо элемента управления. В данном случае, чтобы изменить свойства связанных элементов, надо сначала изменить значение свойства Value на True флажка Включить и переключателя Кредитная карта.
Выполните следующую последовательность действий.
-
Перейдите в редактор Visual Basic (если вы находитесь не в нем) и откройте форму frmGuestExpense.
-
Дважды щелкните на флажке Включить, чтобы открыть окно кода.
-
В списке событий в верхней части окна кода выберите событие Change и в процедуру chkTipIncluded_Change введите следующий код:
If chkTipIncluded.Value = True Then
lblTipAmount. Enabled = True
txtTipAmount.Enabled = True
Else
lblTipAmount.Enabled = False
txtTipAmount.Enabled = False
End If
-
В левом верхнем списке над окном кода (где сейчас отображается chkTipIncluded) щелкните на кнопке со стрелкой, направленной вниз. В открывшемся списке выберите optCreditCard (переключатель Кредитная карта).
-
В списке событий выберите событие Change. В окне кода отобразится заголовок процедуры optCreditCard_Change.
-
Введите код этой процедуры:
If.optCreditCard.Value = True Then
lblCardType.Enabled = True
lstCardType.Enabled = True
lblCardNumber.Enabled = True
txtCardNumber.Enabled = True lblExpires.Enabled = True
txtExpires.Enabled = True
Else
lblCardType.Enabled = False lstCardType.Enabled = False
lblCardNumber.Enabled = False txtCardNumber.Enabled = False
lblExpires.Enabled = False
txtExpires.Enabled = False
End If
-
Перейдите в рабочую книгу на Лист1 и щелкните на командной кнопке. Отобразится форма (рис. 15.3).
-
Установите флажок Включить. Поле ввода сумму станет доступным.
-
Установите переключатель Кредитная карта. Связанные с этим переключателем поля станут также доступными (рис. 15.4).
-
Закройте форму и сохраните рабочую книгу. Возвратитесь в редактор Visual Basic.
Рис. 15.3. После открытия формы некоторые элементы недоступны
Рис. 15.4. С помощью события Change все элементы стали доступны
В процедуре optCreditCard_Change событие Change использовалось для проверки значения свойства Value, и в зависимости от этого значения блокировка элементов управления или снималась (свойство Enabled равно True) или устанавливалась (свойство Enabled равно False). Но при обработке события Change вы не ограничены работой только со свойством Enabled, можно изменить значения таких свойств элементов управления, как Text, Value или Caption.