- •Что такое 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-му часу Тесты
- •Упражнение
Сохранение данных, введенных в форму
Проверка корректности данных - это только одна задача, которую решает процедура cmdSave_Click. Вторая задача, решаемая данной процедурой, заключается в записи данных, введенных в форму, в ячейки рабочего листа. Для этого применяются уже проверенные на корректность значения свойств Text и Value элементов управления. Используйте следующие инструкции для завершения написания процедуры cmdSave_Click.
-
Перейдите на рабочий лист Лист3 и переименуйте его на Расходы.
-
В первой строке листа создайте строку заголовков, повторяющую названия элементов управления формы. За образец возьмите рабочий лист, показанный на рис. 15.6.
-
Перейдите в редактор Visual Basic и отобразите экранную форму.
-
Чтобы открыть окно кода, дважды щелкните на кнопке Сохранить.
-
Введите в процедуру cmdSave_Click перед оператором Unload Me следующий код:
Worksheets("Расходы").Activate
Range("A2").Select
If Range("A2").Value = "" Then
Range("A2").Activate
Else
Range("A2").CurrentRegion.Select
ActiveCell.Offset(Selection.Rows.Count, 0).Activate
End If
With ActiveCell
.Value = txtRoomNumber.Text
.Offset(0, 1).Value = txtGuestName.Text
.Offset(0,2).Value = lstExpenseType.Text
.Offset(0, 3).Value = txtAmount.Text
.Offset(0, 4).Value = txtDate.Text
If chkTipIncluded.Value = True Then
.Offset(0,5).Value=txtTipAmount.Text
End If
If optBillToRoom.Value = True Then
.Offset(0, 6).Value = "В счет"
ElseIf optCash.Value = True Then
.Offset(0, 6).Value = "Наличные"
ElseIf optCheck.Value = True Then
.Offset(0, 6).Value = "Чеком"
ElseIf optCreditCard.Value = True Then
.Offset(0, 6).Value = "Кредитная карта"
.Offset(0, 7).Value = lstCardType.Text
.Offset(0, 8).Value = txtCardNumber.Text
.Offset(0, 9).Value = txtExpires.Text
End If
End With
-
Перейдите в рабочую книгу на Лист1.
-
Сохраните рабочую книгу. (Вообще возьмите себе за правило сохранять рабочую книгу после создания каждой процедуры.)
-
Щелкните на кнопке, вызывающей экранную форму. Введите 430 в поле Номер комнаты и ваше имя в качестве имени гостя. Выберите в списке Тип расходов пункт Уроки гольфа. В поле сумма введите число 100. Установите флажок Включить и в поле сумму введите 10. Установите переключатель Кредитная карта и выберите тип карты Visa. Введите номер кредитной карты 112233, а срок окончания годности карты - 1.01.01. Щелкните на кнопке Сохранить.
-
Форма закроется, а введенные в нее данные будут записаны в ячейки рабочего листа Расходы (рис. 15.6).
Теперь изучим подробнее вторую часть кода процедуры. Рассмотрим начало записи данных в рабочий лист.
Worksheets("Расходы").Activate
Range("A2").Select
If Range("A2").Value = "" Then
Range("A2").Activate
Else
Range("A2").CurrentRegion.Select
ActiveCell.Offset(Selection.Rows.Count, 0).Activate
End If

Рис. 15.6. Все введенные в форму данные скопированы в рабочий лист
Здесь сначала делается текущим рабочий лист Расходы, а затем - ячейка А2. Ввод данных начинается со второй строки рабочего листа, так как в первой размещены заголовки столбцов. Далее проверяется, занята ли ячейка А2. Если нет, то начинается запись данных. Если ячейка А2 занята, то находится последняя занятая ячейка. Здесь ведущую роль играет свойство CurrentRegion (Текущая область) объекта Range. После выделения текущей области можно определить ее размеры и, следовательно, найти первую свободную строку. Для этого используется свойство Offset (Смешение).
Далее в процедуре идет непосредственно запись введенных данных в рабочий лист. Затем проверяется, установлены ли флажок Включить и переключатель Кредитная карта, и если установлены, то также переписываются данные из соответствующих полей.
Для того чтобы наша форма стала функционально полностью завершенной, необходимо написать еще одну процедуру - для кнопки Отмена.
-
Перейдите в редактор Visual Basic и дважды щелкните на кнопке Отмена. Откроется окно кода с заголовком процедуры cmdCancel_Click.
-
В эту процедуру введите следующую строку кода:
Unload Me.
-
Сохраните рабочую книгу.
Теперь, если пользователь щелкнет на кнопке Отмена, то экранная форма удалится из памяти компьютера и с экрана. В реальных приложениях при щелчке на кнопке Отмена часто открывается окно сообщения, требующее подтверждение на закрытие формы. Надеюсь, для вас не составит большого труда добавить в процедуру cmdCancel_Click код, открывающий такое окно сообщения.
Резюме
Итак, создано полнофункциональное диалоговое окно, позволяющее вводить данные, проверять их и записывать в рабочий лист. Поздравляю! Вы делаете большие успехи в программировании!
Подведем промежуточные успехи. В последнем часе рассмотрена методика разработки структуры экранной формы. Этот час был посвящен автоматизации экранной формы, т.е. написанию процедур, управляющих поведением формы и ее элементов управления. Другими словами, вы прошли все этапы создания экранных форм от начала до конца. Вы знаете, как вывести форму на экран и инициализировать ее значения, как проверить корректность вводимых в форму данных и записать их в рабочий лист.
