- •Что такое 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-му часу Тесты
- •Упражнение
Выполнение процедуры
После создания процедуры вы можете ее сразу выполнить. Для этого существует несколько путей. Можно использовать команду Run Sub/UserForm (Выполнить подпрограмму/экранную форму) из меню Run (Выполнить) или щелкнуть на кнопке Run Sub/UserForm стандартной панели инструментов, или нажать клавишу <F5>. Итак, чтобы выполнить нашу процедуру, сделайте следующее.
-
Щелкните на кнопке Run Sub/UserForm стандартной панели инструментов редактора Visual Basic. Процедура выполнится и отобразит окно сообщения (рис. 4.6).
-
Щелкните на кнопке ОК. Вы вернетесь в окно редактора Visual Basic.
Рис. 4.6. Всего одна строка кода процедуры - в результате симпатичное окно сообщения!
Сохранение изменений в модуле
Чтобы сохранить новую процедуру, надо сохранить рабочую книгу, где находится эта процедура. Можно сохранить рабочую книгу из редактора Visual Basic. Для этого выполните следующие действия.
-
Выполните команду File > Save Книга (Файл > Сохранить книгу). Если рабочая книга еще ни разу не сохранялась, дайте ей имя.
-
Введите Первая в качестве имени книги и нажмите клавишу <Enter>. Рабочая книга, модуль и процедура будут сохранены.
Переменные
Переменная - это место хранения значений. Переменная содержит данные, которые могут быть разными в различные моменты выполнения приложения и могут изменяться во время выполнения приложения. Для иллюстрации "полезности" переменных напишем простую процедуру.
-
Создайте новую процедуру с именем СкажиСвоеИмя.
-
Введите следующий код процедуры:
InputBox "Введите Ваше имя"
Не беспокойтесь о синтаксисе оператора InputBox. Более подробно этот оператор будет рассмотрен в 6-м часе "Логика условных операторов".
-
Нажмите клавишу <F5> для выполнения процедуры. Появится окно ввода, предлагающее ввести ваше имя.
-
Введите свое имя и щелкните на кнопке ОК. Процедура закончится.
Где теперь ваше имя? Как найти и сохранить то, что пользователь ввел с помощью окна ввода? Вот для того и необходима переменная, чтобы сохранить все, что введет пользователь.
Типы данных
Первый шаг на пути использования переменных заключается в изучении типов данных. Тип данных переменной показывает, данные какого типа позволяет сохранять переменная. В табл. 4.1 приведен список типов данных, поддерживаемых VBA. В этой таблице также содержится информация о размере данных, т.е. об объеме памяти, выделяемом для хранения данных определенного типа.
Таблица 4.1. Типы данных VBA
Тип данных |
Размер |
Диапазон значений |
Byte (байт) |
1 байт |
Целые числа от 0 до 255 |
Boolean (булевый, логический) |
2 байта |
ИСТИНА (True) ИЛИ ЛОЖЬ (False) |
Integer (целое) |
2 байта |
Целые числа от -32768 до 32767 |
Long (длинное целое) |
4 байта |
Целые числа от -2147483648 до 2147483647 |
Single (одинарной точности) |
4 байта |
От -3,402823Е38 до -1,401298Е-45 для отрицательных чисел; от 1,401298Е-45 до 3,402823Е38 для положительных чисел |
Double (двойной точности) |
8 байт |
От -1,79769313486232Е308 до -4,94065645841247Е-324 для отрицательных чисел; от 4,94065645841247Е-324 до 1,79769313486232Е308 для положительных чисел |
Currency (денежный) |
8 байт |
От -922337203685477,5808 до 922337203685477,5807 |
Decimal (десятичный) |
14 байт |
±79228162514264337593543950335 без десятичных разрядов; +7,9228162514264337593543950335 с 28 десятичными разрядами |
Date (дата) |
8 байт |
От 1 января 100 года до 31 декабря 9999 года |
Object (объект) |
4 байта |
Ссылка на любой объект |
String (строковый переменной длины) |
10 байт + 1 байт на символ |
От 0 до приблизительно 2 млрд. символов |
String (строковый фиксированной длины) |
Длина строки |
От 0 до приблизительно 65400 символов |
Variant (универсальный числовой) |
16 байт |
Любое числовое значение из диапазона типа Double |
Variant (универсальный текстовый |
22 байта + 1 байт на символ |
Тот же диапазон, что и для строкового типа с переменной длиной |
Отметим, что хороший программист всегда выбирает тип данных по возможности наименьшего размера. Например, если надо сохранить небольшое целое число, такое как число студентов в академической группе, то рационально выбрать тип Byte. Интересно, почему в этой ситуации Excel по умолчанию использует расточительный тип Single?