Понятие объектов и их семейств

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")