- •Конспект лекций «Основы языка Visual Basic for Applications»
- •Содержание
- •Основные элементы vba
- •Что такое vba
- •Понятие объектов и их семейств
- •Свойства
- •События
- •Структура редактора vba
- •Окно проекта
- •Окно для редактирования кода
- •Интеллектуальные возможности редактора кода
- •Команды Меню интегрированной среды vba
- •Панели инструментов
- •Работа с макросами
- •Понятие макросов
- •Запись макросов
- •Выполнение макросов
- •Просмотр кода макроса
- •Редактирование кода макроса
- •Удаление макросов
- •Назначение макросов командным кнопкам
- •Назначение макроса графическим изображениям
- •Назначение макросов кнопкам панелей инструментов
- •Основные понятия языка программирования vba
- •Понятие и общие правила написания программного кода
- •Типы данных
- •Объявление переменных
- •Допустимые имена
- •Массивы
- •Константы
- •Операторы ввода / вывода информации
- •Простейшие операции
- •Операции vba
- •Приоритет выполнения операций в выражениях
- •Оператор присвоения
- •Структура программы. Процедуры. Функции
- •Основные понятия
- •Понятие модуля
- •Понятие процедуры
- •Понятие функции
- •Правила для имён процедур и функций
- •Вызов процедур и функций
- •Встроенные функции vba
- •Математические функции
- •Функции проверки типов
- •Функции преобразования типов
- •Функции обработки строк
- •Функции времени и даты
- •Реализация разветвляющихся алгоритмов
- •Условный оператор If … Then
- •Вложенные конструкции для принятия решений с использованием условного оператора If … Then
- •Многозначные ветвления If … Then
- •Оператор выбора Select Case
- •Циклы с заданным количеством повторений For
- •Цикл For … Next
- •Вложенные циклы For … Next
- •Циклы с логическим управлением повторениями While и Do
- •Цикл While … Wend (цикл с предусловием)
- •Цикл Do While … Loop (цикл с предусловием)
- •Цикл Do … Loop While (цикл с постусловием)
- •Адресация ячеек
- •Список использованной литературы
-
Понятие объектов и их семейств
VBA относится к языкам объектно-ориентированного программирования (ООП). ООП можно описать как методику анализа, проектирования и написания приложений с помощью объектов. Что такое объект? Объект позволяет инкапсулировать данные вместе с кодом, предназначенным для их обработки, т. е. объединить их в нечто целое, именуемое объектом. VBA не является объектно-ориентированном языком в строгом понимании этого слова, однако объектный подход играет в нем большую роль. Все визуальные объекты, такие как рабочий лист (Worksheet), диапазон (Range), диаграмма (Chart), форма (UserForm), являются объектами.
Объектная библиотека VBA располагает более 100 различных объектов, находящихся на различных уровнях иерархии. Иерархия определяет связь между объектами и показывает пути доступа к ним. На рис. 1.1 приведена модель встроенных объектов VBA.
Объект Application (приложение) является главным в иерархии объектов Excel и представляет само приложение Excel. Он активизируется при открытии рабочей книги автоматически. Он имеет более 120 свойств и 40 методов. Эти свойства и методы предназначены для установки общих параметров приложения Excel. Кроме того, объект Application позволяет вызывать более 400 встроенных функций рабочего листа.
Этот объект находится на вершине иерархической структуры. Приложение включает рабочие книги (Workbooks) и различные системы надстройки. В свою очередь, рабочие книги содержат рабочие листы (Sheets) и другие объекты. Наконец, рабочие листы включают самый важный объект – диапазон ячеек (Range).
Рис. 1.1. Иерархия встроенных объектов VBA
Сразу после объекта Application в иерархии Excel идет объект Workbook (рабочая книга), который представляет собой файл рабочей книги. Рабочая книга хранится либо в файлах формата XLS (стандартная рабочая книга) или XLA (полностью откомпилированное приложение).
Некоторые основные свойства рабочей книги представлены в таблице:
|
Свойства |
Выполняемые действия и допустимые значения |
|
ActiveSheet |
Возвращает активный лист книги. Например: MsgBox "Имя активного листа –" & ActiveSheet.Name — выводит в диалоговом окне имя активного рабочего листа |
|
Sheets |
Возвращает семейство всех листов книги |
|
Worksheets |
Возвращает семейство всех рабочих листов книги |
|
Count |
Возвращает число объектов семейства workbooks |
Далее в иерархии Excel идет объект Worksheet, который представляет собой рабочий лист.
Одно из наиболее часто используемых свойств данного объекта является свойство Cells, которое возвращает объект типа Range (область – см. далее).
В иерархии Excel объект Range (диапазон) идет сразу после объекта Worksheet. Объект Range является одним из ключевых объектов VBA.
Объект Selection (выбор) возникает в VBA двояко:
– либо как результат работы метода Select. Данный метод позволяет выделить ячейку или область ячеек рабочего листа;
– либо при вызове свойства Selection. Данное свойство возвращает ссылку на выделенный объект, например, ячейку или область ячеек. Тип получаемого объекта зависит от типа выделенного объекта. Чаще всего объект Selection принадлежит классу Range и при работе с ним можно использовать свойства и методы объекта Range.
Семейство (объект Collection) представляет собой объект, содержащий несколько других объектов, как правило, одного и того же типа. Например, объект Workbooks (рабочие книги) содержит все открытые объекты Workbook (рабочая книга). Каждый элемент семейства нумеруется и может быть идентифицирован либо по номеру, либо по имени. Например, Worksheets(1) обозначает первый рабочий лист активной книги, a Worksheets(«Лист1») — рабочий лист с именем «Лист1».
Полная ссылка на объект состоит из ряда имен вложенных последовательно друг в друга объектов. Разделителями имен объектов в этом ряду являются точки, ряд начинается с объекта Application и заканчивается именем самого объекта. Например, полная ссылка на ячейку А1 рабочего листа лист рабочей книги с именем Архив имеет вид:
Application.Workbooks("Архив").Worksheets("Лист1").Range("Al")
Приводить каждый раз полную ссылку на объект совершенно не обязательно. Обычно достаточно ограничиться только неявной ссылкой на объект.
В неявной ссылке, в отличие от полной, объекты, которые активны в данный момент, как правило, можно опускать. В рассмотренном случае, если ссылка на ячейку А1 дана в программе, выполняемой в среде Excel, то ссылка на объект Application может быть опущена, т. е. достаточно привести относительную ссылку:
Workbooks("Архив").Worksheets("Лист1").Range("A1")
Если рабочая книга «Архив» является активной, то ссылку можно записать еще короче:
Worksheets("Лист1").Range("А1")
Если и рабочий лист «Лист1» активен, то в относительной ссылке вполне достаточно ограничиться упоминанием только диапазона А1:
Range("Al")
-
Методы
Объект сам по себе не представляет большого значения. Намного значительнее то, какие действия можно совершать над объектом, и какими свойствами он обладает. Метод как раз и представляет собой действие, выполняемое над объектом.
Синтаксис применения метода:
Объект.Метод
В данном примере при помощи метода Quit (закрыть) закрывается приложение (объект Application).
Application.Quit
Метод можно применять ко всем объектам семейства. В данном примере к семейству ChartObjects (диаграммы) рабочего листа лист1 применен метод Delete (удалить), который приводит к удалению всех диаграмм с рабочего листа Лист1:
Worksheets("Лист1").ChartObjects.Delete
