Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Создание пользовательских п ÒÉÌÏÖÅÎÉÊ ÓÒÅÄÓÔÁÍ...doc
Скачиваний:
6
Добавлен:
18.11.2019
Размер:
2.02 Mб
Скачать

Коллекции объектов

Коллекция объектов это объект специального типа, существующий для управления объектами группы. Например, Workbooks является коллекцией всех открытых книг – объектов Workbook, а Worksheets – коллекцией рабочих листов некоторой рабочей книги – объектов Worksheet. Примерно половина всех объектов MS Excel – это коллекции объектов.

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

Множественное число, используемое в названии объекта, как правило, указывает на то, что это коллекция объектов. Но имеются исключения. Объект Ticklabels (метки оси диаграммы) не является коллекцией объектов. С другой стороны, множественное число в названии коллекции строк Rows не означает, что в состав этой коллекции входят объекты Row. Таких объектов попросту нет. Строки таблицы – это объекты Range, которые составляют коллекцию Rows.

Коллекция объектов – это упорядоченная совокупность объектов. Для доступа к конкретному объекту в коллекции можно использовать его имя или порядковый номер в коллекции, например, Workbooks(1) указывает на первую рабочую книгу. Запись Worksheets("Sheet2") указывает на лист с именем Sheet2.

Обращение к объекту Контейнеры

Объекты приложения могут содержать в себе объекты разных типов. Например, рабочая книга может содержать один или несколько рабочих листов и листов диаграмм. Рабочий лист, в свою очередь, содержит строки, колонки и интервалы ячеек. Когда объект одного типа находится внутри объекта другого типа, говорят о контейнере (container), в котором содержится объект.

Самый старший контейнер объектов MS Excel – это приложение Application. Приложение суть контейнер для всех открытых рабочих книг и в то же время приложение содержит такой глобальный объект как строка меню, который доступен любой рабочей книге. Рабочий лист представляет пример того, что объект может быть частью нескольких контейнеров или коллекций одновременно: он входит в рабочую книгу с одной стороны, а с другой стороны является частью коллекции Sheets и коллекции Worksheets.

Преимущества

  • Рассмотрение объекта в качестве контейнера позволяет уточнить, сославшись на контейнер, с каким именно объектом производится действие в процедуре.

Если в рабочей книге имеются два рабочих листа Sheet1 и Sheet2, то запись Worksheets("Sheet1").Range("A1") указывает на ячейку A1 рабочего листа Sheet1, а запись Worksheets("Sheet2").Range("A1") указывает на ячейку A1 рабочего листа Sheet2.

Например, оператор ActiveSheet.Range("A1").Value="The First" сохраняет заданное значение в ячейке A1 активного рабочего листа.

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

Объект в VBA указывается при помощи ссылки. Запись Workbooks("cross").Worksheets("Sheet2") указывает на объект, являющийся листом с именем Sheet2 в рабочей книге cross, отличая его, таким образом, от листа с тем же именем, но в другой рабочей книге.

Важно

  • Ссылка на объект состоит из имени контейнера и названия свойства-участника.

  • Ссылка на объект может состоять из нескольких спецификаторов (имен контейнеров), отделенных друг от друга точкой. Такая запись отражает иерархию объектов и позволяет точно указать конкретный объект.

  • Свойства и методы объекта указываются через точку после ссылки на объект.

Свойство ActiveWorkbook является свойством объекта Application и определяет активную рабочую книгу. Например, оператор Application.ActiveWorkbook.Close закрывает активную рабочую книгу.

Для объектов, относящихся к классу globals (например, активная рабочая книга, активная ячейка рабочего листа, константа), спецификатор Application можно опустить. Предыдущий оператор можно записать как ActiveWorkbook.Close. Другой пример: оператор ActiveCell.Value="False" устанавливает в False значение активной ячейки.

Перечень объектов, составляющих класс globals см. Приложение A. Справочная система, Object Browser.