- •Что такое 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-му часу Тесты
- •Упражнение
Оператор Select Case
Посмотрите на код листинга 6.3: оператор If переводит баллы, полученные студентами при выполнении тестов, в пятибалльную систему оценок.
Листинг 6.3. Применение оператора If для случая многих исходов
1: If Range(“A3”) >= 90 Then
2: MsgBox “Вы получили за тесты оценку 5”
3: ElseIf Range(“A3”) < 90 And Range (“A3”) >= 80 Then
4: MsgBox “Вы получили за тесты оценку 4”
5: ElseIf Range(“A3”) < 80 And Range (“A3”) >= 70 Then
6: MsgBox “Вы получили за тесты оценку 3”
7: ElseIf Range(“A3”) < 70 And Range (“A3”) >= 60 Then
8: MsgBox “Вы получили за тесты оценку 2”
9: Else
10: MsgBox “Вы не прошли тесты”
11: End If
Этот оператор содержит множество выражений ElseIf и труден для восприятия. В подобных случаях альтернативой оператору If может быть оператор Select Case, который легче для восприятия и лучше приспособлен для работы в ситуациях со многими исходами. Листинг 6.4 содержит код с оператором Select Case, выполняющий ту же задачу, что и код листинга 6.3.
Листинг 6.4. Пример оператора Select Case
1: Select Case Range(“A3”)
2: Case Is >= 90
3: MsgBox “Вы получили 5!”
4: Case 80 To 89
5: MsgBox “Вы получили 4”
6: Case 70 To 79
7: MsgBox “Вы получили 3”
8: Case 60 To 69
9: MsgBox “Вы получили 2”
10: Case Else
11: MsgBox “Вы не прошли тесты”
12: End Select
Вы видите, что этот код более понятен и прост для восприятия. Синтаксис оператора Select Case следующий:
Select Case тестовое_выражение
[Case список_выражений-n
[операторы-n]]...
[Саse Else
[операторы]]
End Select
Листинг 6.5 показывает другой пример использования оператора Select Case. Обратите внимание, что когда отдельные значения разделены запятыми, то это эквивалентно применению логического оператора Or (Или). Например, выражение Case “Техас”, “Флорида” интерпретируется оператором Select Case как Техас или Флорида.
Листинг 6.5. Еще пример оператора Select Case
1: 'Оператор Select Case определяет стоимость отправки грузов
2: 'в зависимости от регионов
3: Select Case State
4: Case “Нью-Йорк”
5: cShipping = 5.00
6: Case “Джорджия”, “Южная Каролина”, “Огайо”
7: cShipping = 4.00
8: Case “Флорида”, “Техас”
9: cShipping = 3.00
10: Case “Алабама”, “Вашингтон”, “Калифорния”, “Иллинойс”
11: cShipping = 2.00
12: Case Else
13: cShipping = 1.00
14: End Select
Для применения в операторе Select Case операторов сравнения необходимо использовать ключевые слова Is и То. Ключевое слово Is используется тогда, когда необходимо сравнить тестовое_выражение со значениями список_выражений. Ключевое слово Tо служит для задания интервала значений, как это сделано в листинге 6.4.
Использование встроенных диалоговых окон Excel
Теперь, когда вы знаете, как управлять потоками выполнения приложений, можно организовать любую реакцию приложения в ответ на выбор, сделанный пользователем в окне сообщения. Например, если в окне сообщения спрашивается, хочет ли пользователь сохранить свою рабочую книгу, то вы должны организовать вывод на экран диалогового окна Сохранение документа. Excel имеет примерно 200 встроенных диалоговых окон. С помощью VBA можно получить доступ ко всем встроенным диалоговым окнам. Синтаксис оператора для открытия встроенных диалоговых окон следующий:
Application.Dialogs (xlDialogКонстанта).Show
Чтобы задать значение аргумента xlDialogКонстанта, откройте окно просмотра объектов Object Browser и в библиотеке Excel выберите класс XLBuiltInDialog. Вы увидите список всех доступных значений аргумента xlDLslogКонстанта и без труда поймете, что Константа - это просто название диалогового окна. (Естественно, название диалогового окна надо вводить на английском языке и так, как оно показано в окне Object Browser, но это не мешает VBA отображать сами окна в русифицированном виде. - Прим. ред.) Следующие действия приведут к открытию вашим приложением встроенного диалогового окна.
-
Вставьте новую процедуру в текущий модуль и назовите ее СохранениеКниги.
-
Введите следующий код процедуры:
Dim iResponse As Integer
iResponse = MsgBox(“Сохранить рабочую книгу?”, vbYesNo)
If iResponse = vbYes Then
Application.Dialogs(xlDialogSaveAs).Show
End If
-
Перейдите на рабочий лист, где вы вычисляли комиссионные.
-
Вставьте новую командную кнопку и назначьте ей процедуру СохранениеКниги.
-
Дайте этой кнопке название Сохранить книгу.
-
Щелкните вне кнопки, чтобы снять с нее выделение.
-
Щелкните на кнопке Сохранить книгу. Откроется окно сообщения, спрашивающее, хотите ли вы сохранить рабочую книгу.
-
Щелкните на кнопке Да, и на экране появится диалоговое окно Сохранение документа (рис. 6.5).
-
Щелкните на кнопке Отмена.

Рис. 6.5. Для вас доступны все диалоговые окна Excel!
Резюме
В этом часе вы изучили два способа управления потоками выполнения программ: С помощью оператора If и оператора Select Case. Вы также узнали, как получить доступ к встроенным диалоговым окнам Excel. Это сохранит ваше время как разработчика приложения (в вашем распоряжении более 200 диалоговых окон!), а пользователю вашего приложения даст для работы хорошо знакомый ему интерфейс.
