- •Что такое 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-му часу Тесты
- •Упражнение
Проверка вводимых данных
После того как пользователь ввел всю нужную информацию в форму, он щелкает на кнопке Сохранить. Что должно произойти после этого? Процедура, которая запускается на исполнение после щелчка на кнопке Сохранить, должна проверить правильность введенных данных и в случае их корректности записать данные в рабочий лист.
Начнем с проверки правильности данных. Понятие правильности (корректности) данных зависит от выполняемого приложения. Поле ввода может принять все, что вы способны ввести с клавиатуры. И если вы ввели какую-нибудь абракадабру, то это не значит, что введенное значение некорректно. Все зависит от тех ограничений, которые накладывает приложение на вводимые данные. Например, на разрабатываемой нами экранной форме есть поле ввода Номер комнаты. Очевидно, что корректными значениями для этого поля будут целые положительные числа. Далее предположим, что в нашем отеле сдаются только комнаты с номерами от 101 до 730. В этом случае корректными данными для поля будут лишь целые числа из указанного интервала. Аналогичные ограничения должны накладываться на значения полей Тип расходов, Сумма, Дата, а также на значения полей группы Способ оплаты. (Обратите внимание на маленькую, но существенную деталь: проверку поля сумму и полей с данными о кредитной карте надо выполнять только тогда, когда эти поля разблокированы.)
Надеюсь, вы поняли, от чего зависит правильность данных, и сейчас мы приступим к созданию процедуры, которая будет выполняться после щелчка на кнопке Сохранить и проверять корректность введенных данных. Выполните следующие действия.
-
В редакторе Visual Basic отобразите разрабатываемую форму.
-
Дважды щелкните на кнопке Сохранить. В окне кода появится заголовок процедуры cmdSave_Click.
-
Введите следующий код этой процедуры:
If Val(txtRoomNumber.Text) < 101 Or _
Val(txtRoomNumber.Text) > 730 Then
MsgBox "Неправильный номер комнаты"
txtRoomNumber.SetFocus
Exit Sub
End If
If txtGuestName.Text = "" Then
MsgBox "Пожалуйста, введите имя гостя"
txtGuestName.SetFocus
Exit Sub
End If
If chkTipIncluded.Value = True Then
If txtTipAmount = " " Then
MsgBox "Если установлен флажок "Включить", _
то надо ввести число в поле "сумму" "
txtTipAmount.SetFocus
Exit Sub
End If
End If
If txtAmount.Text = "" Then
MsgBox "Пожалуйста, введите сумму расходов"
txtAmount.SetFocus
Exit Sub
End If
If IsNumeric(txtAmount.Text) = False Then
MsgBox "Сумма должна быть числом"
txtAmount.SetFocus
Exit Sub
End If
If txtDate.Text = "" Then
MsgBox "Необходимо ввести дату"
txtDate.SetFocus
Exit Sub
End If
If optCreditCard.Value = True Then
If txtCardNumber = "" Then
MsgBox "Пожалуйста, введите номер кредитной карты"
txtCardNumber.SetFocus
Exit Sub
End If
If txtExpires.Text = "" Then
MsgBox "Введите дату окончания карты"
txtExpires.SetFocus
Exit Sub
End If
End If
Unload Me
-
Перейдите в рабочую книгу и щелкните на командной кнопке, отрывающей форму.
-
Щелкните на кнопке Сохранить. Появится окно с сообщением: "Неправильный номер комнаты" (рис. 15.5).
-
Щелкните на кнопке ОК, чтобы закрыть окно сообщения. Введите 121 в поле Номер комнаты и щелкните на кнопке Сохранить. В другом появившемся окне сообщения щелкните на кнопке ОК.
-
Введите свое имя как имя гостя. Введите 20 в поле Сумма.
-
Щелкните на флажке Включить, а затем на кнопке Сохранить. Появится очередное окно сообщения с предложением ввести данные в поле сумму. Щелкните на кнопке ОК, чтобы закрыть это окно.
-
Введите число 2 в поле сумму и щелкните на кнопке Сохранить. Форма исчезнет с экрана.
Вы, конечно, заметили, что в этой процедуре проверялись свойства Text и Value элементов управления. Рассмотрим подробнее код одной такой проверки, показанный в листинге 15.2.
Листинг 15.2. Проверка значения поля Номер комнаты
1: If Val(txtRoomNumber.Text)<101 Or Val(txtRoomNumber.Text)>730 Then
2: MsgBox "Неправильный номер комнаты"
3: txtRoomNumber.SetFocus
4: Exit Sub
5: End If
Здесь оператор If проверяет, находится ли значение поля txtRoomNumber (Номер комнаты) в интервале от 101 до 730. Отметим применение функции Val, преобразующей строковое значение в числовое. Она необходима из-за того, что значение свойства Text (т.е. введенное в поле значение) имеет строковый (текстовый) тип данных. Вы обратили внимание, что здесь нет проверки той ситуации, когда пользователь вообще ничего не ввел в это поле? Просто эта ситуация подпадает под тот случай, когда введенное значение меньше 101.
Рис. 15.5. Одно из многих окон с сообщениями о некорректности введенных данных
Метод SetFocus делает активным указанный элемент управления формы. Оператор выхода из процедуры Exit Sub используется после каждой проверки, так как нет смысла продолжать процедуру, если ошибка обнаружена и выведено соответствующее окно сообщения. Если ошибки не обнаружены, то с помощью оператора Unload Me форма выгружается из памяти компьютера и удаляется с экрана.