Об объектах и коллекциях

В этом разделе приводится дополнительная информация об объектах и коллекциях объектов.

Работая с кодом VBA, следует четко понимать назначение объектов и объектной модели Excel. Целесообразнее рассматривать объекты с точки зрения иерархической структуры. На вершине объектной модели находится объект Application (в данном случае – Excel). Но если вы программируете в VBA, запуская VBE в Microsoft Word, то объектом Application будет выступать Word.

Иерархия объектов

Объект Application (в рассматриваемом случае Excel) содержит другие объекты. Ниже приведено несколько примеров объектов, которые находятся в объекте Application:

Workbooks (коллекция всех объектов Workbook – рабочих книг);
Windows (коллекция всех объектов Window – окон);
Addins (коллекция всех объектов Addin – надстроек).

Одни объекты могут содержать другие объекты. Например, коллекция Workbooks состоит из всех открытых объектов Workbook, а объект Workbook включает другие объекты. Некоторые из них представлены ниже:

Worksheets (коллекция объектов Worksheet – рабочих листов);
Charts (коллекция объектов Chart – диаграмм);
Names (коллекция объектов Name – имен).

Каждый из этих объектов, в свою очередь, может содержать другие объекты. Коллекция Worksheets состоит из всех объектов Worksheet рабочей книги Workbook. Объект Worksheet включает другие объекты, среди которых есть следующие:

ChartObjects (коллекция объектов ChartObject – элементов диаграмм);
Range – диапазон;
PageSetup – параметры страницы;
PivotTables (коллекция объектов PivotTable – сводных таблиц).

Может быть, вы пока не готовы правильно воспринять подобную концепцию, но со временем наверняка поймете, что иерархия объектов вполне логична и хорошо структурирована. Вся объектная модель Excel схематически изображена в электронной справочной системе.

О коллекциях

Одной из ключевых концепций в программировании на языке VBA является коллекция. Коллекция – это группа объектов одного класса (и сама коллекция также является объектом). Как указывалось выше, Workbooks – это коллекция всех открытых в данный момент объектов Workbook. Worksheets – коллекция всех объектов Worksheet, которые содержатся в конкретном объекте Workbook. Можно одновременно управлять целой коллекцией объектов или отдельным объектом этой коллекции. Чтобы сослаться на один объект из коллекции, введите название или номер объекта в скобках после названия коллекции.

Worksheets(“Лист1”)

Если лист Лист1 – это первый рабочий лист в коллекции, то можно использовать следующую ссылку:

Worksheets(1)

Если в объекте Workbook нужно сослаться на второй рабочий лист, ссылка указывается в формате Worksheets(2) и т.д. Коллекция Sheets состоит из всех листов рабочей книги, которые могут представлять собой рабочие листы или листы диаграмм. Если Лист1 – первый лист в рабочей книге, ссылка на него имеет следующий вид:

Sheets(1)

Ссылки на объекты

Если вы обращаетесь к объекту в VBA, то в ссылке на него вводятся названия всех расположенных выше в иерархической структуре объектов, разделенных точкой (оператор-точка). Что делать, если в Excel открыты две рабочие книги и в обеих имеется рабочий лист с названием Лист1? В этом случае в ссылке необходимо указать контейнер требуемого объекта.

Workbooks(“Книга1”).Worksheets(“Лист1”)

Без указания рабочей книги редактор Visual Basic искал бы Лист1 в активной рабочей книге.

Чтобы сослаться на определенный диапазон (например, на ячейку А1) на рабочем листе с названием Лист1 в рабочей книге Книга1, можно использовать следующее выражение:

Workbooks(“Книга1”).Worksheets(“Лист1”).Range(“A1”)

Полная ссылка из предыдущего примера включает объект Application и выглядит так:

Application.Workbooks(“Книга1”).Worksheets(“Лист1”).Range(“A1”)

Однако в большинстве случаев можно опускать объект Application в ссылках (кроме него использоваться больше нечему). Если объект Книга1 – это активная рабочая книга, то опустите ссылку на нее и запишите рассматриваемое выражение следующим образом:

Worksheets(“Книга1”).Range(“A1”)

Если Лист1 – активный рабочий лист, можно еще более упростить выражение:

Range(“A1”)

В Excel отсутствует объект отдельной ячейки. Отдельная ячейка представляет собой объект Range, состоящий из одного элемента.

Простые ссылки на объекты (как в приведенных примерах) ничего не выполняют. Чтобы выполнить действие, прочтите или измените свойства объекта или задайте метод, который выполняется по отношению к объекту.

В начало

Полезное

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *