- •2.1. Алфавит и словарь языка
- •2.2. Переменные
- •2.3. Константы
- •2.4. Строковые переменные
- •2.5. Массивы
- •2.6. Пользовательские типы данных
- •2.7. Операции VBA
- •2.8. Объектная модель Excel
- •2.8.1. Свойства и методы объектов
- •2.8.2. Отображение объектной модели Excel
- •2.8.2.1. Иерархия объектной модели
- •2.8.2.2. Ссылка на объекты в коде VBA
- •2.8.3. Работа с объектами
- •2.8.3.1. Задание свойств объекта
- •2.8.3.2. Использование методов объекта
- •2.8.3.3. Переменные-объекты
- •2.8.3.4. Коллекции
- •2.8.3.5. Метод Add
- •2.8.3.6. Свойство Count
- •2.8.4. Свойства и методы основных объектов Excel
- •2.8.4.1. Объект Application
- •2.8.4.2. Объект Worksheet
- •2.8.4.3. Объект Range
- •2.8.5. Просмотр объектов
- •2.8.6. Использование справочной системы
- •2.8.6.1. Использование функциональной клавиши F1
- •2.8.6.2. Использование помощника
- •2.9. Ввод и вывод данных
- •2.9.3. Метод InputBox
- •2.9.4. Объединение текстовых строк
- •2.10. Концепция событий Excel
- •2.10.1. Типы событий Excel
- •2.10.2. События объекта Workbook
- •2.10.3. События объекта Worksheet
- •2.10.4. События объекта Application
- •2.10.5. События объекта UserForm
- •2.10.6. События, не связанные с конкретными объектами
- •2.10.6.1. Метод OnKey
- •2.10.6.2. Событие OnTime
- •2.11. Формы пользователя
- •2.11.1. Свойства, методы и события экранных форм
- •2.11.1.1. Некоторые свойства форм
- •2.11.1.2. Некоторые методы форм
- •2.11.1.3. Некоторые события форм
- •2.11.2. Элементы управления
- •2.11.2.1. Элемент управления Label (Надпись)
- •2.11.2.1.1. Окно свойств формы
- •2.11.2.2. Элемент управления CommandButton (Кнопка)
- •2.11.2.3. Элемент управления TextBox (Текстовое поле)
- •2.11.2.4. Элемент управления ComboBox (комбинированный список)
- •2.11.2.5. Элемент управления ListBox (список)
- •2.11.2.6. Элемент управления CheckBox (Флажок)
- •2.11.2.7. Элемент управления ToggleButton (Выключатель)
- •2.11.2.8. Элемент управления OptionButton (Переключатель)
- •2.11.2.9. Элемент управления Image (Рисунок)
- •2.11.2.12. Элемент управления RefEdit (Поле со свёртыванием)
- •2.11.2.13. Элементы управления на рабочем листе
- •2.12. Инструкции VBA
- •2.12.1. Оператор присваивания
- •2.12.2. Инструкция Set
- •2.12.3. Циклы
- •2.12.3.1. Инструкция For… Next
- •2.12.3.2. Инструкция While…Wend
- •2.12.3.3. Инструкция Do... Loop
- •2.12.3.4. Инструкция For Each…Next
- •2.12.4. Инструкции перехода
- •2.12.4.1. Инструкция условного перехода If…Then…Else
- •2.12.4.2. Инструкция Select…Case
- •2.12.4.3. Инструкция безусловного перехода GoTo
- •2.12.4.4. Инструкции перехода к обработчику ошибок On Error
- •2.12.4.5. Инструкции прерывания выполнения блока Exit
- •2.13. Функции VBA
- •2.13.1. Встроенные функции
- •2.13.1.1. Математические функции
- •2.13.1.2. Функции преобразования данных
- •2.13.1.3. Функции даты и времени
- •2.13.1.4. Строковые функции
- •2.13.1.5. Примеры использования функций VBA
- •2.13.1.5.1. Удаление ненужных символов
- •2.13.1.5.2. Определение длины строки
- •2.13.1.5.3. Сравнение и поиск строк
- •2.13.1.5.4. Выделение части строки
- •2.13.1.5.5. Форматирование значений данных
- •2.13.2. Функции, определённые пользователем
- •2.14. Файлы VBA
- •2.14.1. Типы файлов в VBA
- •2.14.2. Открытие и закрытие файла
- •2.14.3. Ввод данных в файл последовательного доступа
- •2.14.4. Вывод данных из файла последовательного доступа
- •2.14.5. Работа с файлом произвольного доступа
- •2.15. Создание процедуры
- •2.16. Выполнение процедуры
- •2.17. Сохранение процедуры
- •2.18. Запись последовательности действий пользователя
- •2.19. Просмотр кода макроса
- •3.1. Тестирование и отладка как этап разработки приложений
- •3.1.1. Отладка
- •3.1.1.1. Режим останова
- •3.1.1.2. Использование окна Immediate
- •3.1.1.2.1. Просмотр значений в окне Immediate
- •3.1.1.3. Пошаговое выполнение программ
- •3.1.2. Исправление ошибок
- •Библиографический список
- •Оглавление
19
В объектных моделях приложений Office наряду с массивами используются коллекции. Коллекции – это специальные объекты, которые предназначены для хранения наборов одинаковых элементов. Коллекции обычно удобнее, чем массивы; они изначально безразмерны и в них предусмотрен стандартный набор свойств и методов.
2.6. Пользовательские типы данных
VBA позволяет создавать структурные, так называемые пользовательские типы данных, аналогичные записям языка Pascal или языков PL/1 и COBOL. Например, если нужно обрабатывать сведения о результатах экзаменационной сессии, то можно создать пользовательский тип данных с названием Успеваемость.
Type Успеваемость ФИО As String * 20
№_Зач_кн As String * 8 Дисциплина As String * 20 Оценка As String * 20
End Type
Примечание1
Пользовательский тип данных определяется вверху модуля, в процедуре которой он используется, перед началом введения кода процедуры.
Если пользовательский тип данных создан, то для объявления переменной этого типа следует применить инструкцию Dim.
Пример
Sub Пользоват_Тип()
Dim Студенты As Успеваемость Студенты.ФИО = InputBox("Введите ФИО") Студенты.№_Зач_кн = InputBox("№_Зач_кн") Студенты.Дисциплина = InputBox("Дисциплина") Студенты.Оценка = InputBox("Оценка")
MsgBox Студенты.ФИО & Студенты.№_Зач_кн & _ Студенты.Дисциплина & Студенты.Оценка
End Sub
Примечание2
В инструкции Dim переменную можно объявить с тем же именем, какое определено в пользовательском типе данных. В этом случае приведённый выше пример будет иметь вид:
Sub Пользоват_ТИП()
Dim Успеваемость As Успеваемость Успеваемость.ФИО = InputBox("Введите ФИО") Успеваемость.№_Зач_кн = InputBox("№_Зач_кн") Успеваемость.Дисциплина = InputBox("Дисциплина") Успеваемость.Оценка = InputBox("Оценка")
20
MsgBox Успеваемость.ФИО & Успеваемость.№_Зач_кн & _ Успеваемость.Дисциплина & Успеваемость.Оценка
End Sub
Как правило, пользовательский тип данных определяется для массивов, например, так:
Dim Студенты (1 to 40) As Успеваемость
Все 40 элементов этого массива состоят из четырёх компонентов, как это указано в пользовательском типе данных Успеваемость. На конкретный элемент массива, например, первый можно сослаться следующим образом.
Студенты(1).ФИО = InputBox("Введите ФИО") Студенты(1). №_Зач_кн = InputBox("Введите №_Зач_кн")
Студенты(1). Дисциплина = InputBox ("Введите Дисциплина") Студенты(1). Оценка= InputBox ("Введите Оценка")
2.7.Операции VBA
Впрограммах на VBA можно использовать стандартный набор операций над данными. Имеются три основных типа операций:
математические,
отношения,
логические.
Математические операции
Операнд!] + [Операнд2] |
Сложение |
|
[ Операнд!] -- [Операнд2] |
Вычитание |
|
- [Операнд] |
Перемена знака |
|
Операнд!] * [Операнд2] |
Умножение |
|
[Операнд!] / [Операнд2] |
Деление |
|
[Операнд1] \ [Операнд2] |
Целочисленное деление |
|
[Операнд1] Mod [Операнд2] |
Остаток от деления по модулю |
|
[Операнд1] ^ [Операнд2] |
Возведение в степень |
|
Операции отношения |
|
|
[Операнд1] < [Операнд2] |
|
Меньше |
[Операнд1] > [Операнд2] |
|
Больше |
[Операнд1] <= [Операнд2] |
|
Меньше или равно |
[Операнд1] >= [Операнд2] |
|
Больше или равно |
[Операнд1] <> [Операнд2] |
|
Не равно |
[Операнд1] = [Операнд2] |
|
Равно |
[Операнд1] Is [Операнд2] |
|
Сравнение двух операндов, содер- |
|
|
жащих ссылки на объекты |
[Операнд1] Like [Операнд2] |
|
Сравнение двух строковых выраже- |
|
|
ний |