- •Что такое 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-му часу Тесты
- •Упражнение
Соглашения об именах переменных
В 3-м часе "Работа с элементами управления" вы познакомились с соглашениями, применяемыми к именам элементов управления. Многие разработчики придерживаются аналогичных соглашений для имен переменных. В табл. 4.2 представлены рекомендуемые префиксы для имен переменных.
Таблица 4.2. Префиксы для имен переменных
Тип данных |
Короткий префикс |
Длинный префикс |
Array (массив) |
а |
ary |
Boolean (булевый, логический) |
f |
bin |
Byte (байт) |
b |
bit |
Currency (денежный) |
с |
cur |
Date/Time (дата/время) |
dt |
dtm или dat |
Double (двойной точности) |
d |
dbl |
Integer (целое) |
i |
int |
Long (длинное целое) |
l |
lng |
Object (объект) |
о |
obj |
Single (одинарной точности) |
|
sng |
String (строковый) |
s |
str |
Variant (универсальный) |
v |
var |
Листинг 4.3 показывает примеры объявления переменных различных типов. Обратите внимание на объявление строковых переменных - если вам известно максимальное число символов в строке, то это число можно указать в объявлении переменной.
В листинге 4.3 присутствуют строки, которые начинаются с одинарной кавычки ('). Это строки комментариев, которые используются для пояснения кода процедур. При выполнении процедур комментарии игнорируются.
Листинг 4.3. Объявления переменных
1: 'Следующие строки объявляют переменные
2: Dim StudentID
3: Dim iNumberOfStudents as Integer
4: Dim dTestDate as Date
5: 'Далее объявляется строковая переменная произвольной длины
6: Dim sLastName as String
7: 'Следующая строка объявляет строковую переменную
8: 'фиксированной длины в 2 символа
9: Dim sState as String * 2
Вы видите в этом листинге имена переменных различных типов. Большинство имен имеет префикс, записанный в нижнем регистре. Само имя переменной может состоять из букв как в верхнем, так и в нижнем регистрах.
Массивы
Если вы работали с другими языками программирования, то, вероятно, знакомы с массивами. Массив - это совокупность переменных, имеющих одинаковый тип данных и объединенных под общим именем. Элементы массива идентифицируются порядковым номером. Синтаксис объявления массива следующий:
Dim имя_массивa(n) As тип
где n - количество элементов в массиве
Например, если вы хотите создать массив, содержащий имена 10-ти студентов, используйте следующий оператор:
Dim sStudents(9) As String
Отметьте, что в скобке стоит число 9, а не 10. Это потому, что первый порядковый номер в перечислении элементов массива по умолчанию равен 0. Массивы эффективно применять при работе с однотипной информацией. Предположим, вам надо обработать 15 тестовых оценок. Для этого можно создать 15 переменных с помощью 15 операторов Dim. Но можно создать массив, содержащий все тестовые оценки, и использовать при этом только один оператор Dim:
Dim iTestScores(14) As Integer
В основном вы будете использовать одномерные массивы, подобные приведенным выше, но VBA поддерживает и многомерные массивы. Двумерный массив, например, по своей структуре напоминает обычную таблицу. Чтобы создать двумерный массив-таблицу размером 4×4, примените следующий оператор:
Dim iTable(3, 3) As Integer
Существует возможность при объявлении массива не указывать его размер. Это позволяет задать размер массива после начала выполнения программы. Например, ваше приложение позволяет пользователю создавать собственные таблицы, предлагая ввести количество столбцов и строк для новой таблицы. Применив динамически изменяемый массив, вы не только создадите такую таблицу, но и позволите пользователю добавлять или удалять строки и столбцы в этой таблице в процессе выполнения приложения. Если при объявлении массива не указаны его размеры, то такой массив называется динамическим. Синтаксис объявления динамического массива имеет следующий вид:
Dim имя_массива() As тип
Для задания размера динамического массива во время выполнения приложения используется оператор ReDim:
ReDim имя_массива(размер)
Аргумент размер задает новый размер массива. Для того чтобы не потерять текущее содержимое массива при задании его нового размера, в операторе ReDim используется ключевое слово Preserve:
ReDim Preserve имя_массива(размер)