Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Макросы.doc
Скачиваний:
26
Добавлен:
21.11.2018
Размер:
16.91 Mб
Скачать

Переменные-объекты

При изучении типов данных мы только упомянули о типе Object. Переменные этого типа называются переменными-объектами. Поскольку эти переменные указывают на объект, они могут иметь свойства и методы, соответствующие этому объекту.

Переменные-объекты объявляются точно так же, как переменные других типов, т.е. с помощью оператора Dim, при этом можно использовать родовой тип данных Object или применить тип конкретного объекта. В листинге 8.1 показано несколько примеров объявления переменных-объектов.

Листинг 8.1. Объявление переменных-объектов

1: Dim BudgetSheet As Object

2: Dim AnotherBudget As Worksheet

3: Dim WorkingFile As Workbook

4: Dim DeptCodes As Range

Первый оператор Dim использует родовой тип данных Object. Это наименее предпочтительный способ объявления переменных-объектов. Более предпочтительны способы объявления с указанием определенных объектов, как показано в последних трех строчках листинга 8.1. После объявления переменных-объектов с помощью оператора Set им назначаются конкретные объекты. В листинге 8.2 показаны примеры использования оператора Set.

Листинг 8.2. Примеры оператора Set

1: Set BudgetSheet = Workbooks("Финансы").Worksheets("Бюджет")

2: Set AnotherBudget = Workbooks("МММ").Worksheets("Бюджет")

3: Set WorkingFile = Workbooks("Финансы")

4: Set DeptCodes = Workbooks("Бюджет").Worksheets("Категория").Range("A1:A12")

После назначения переменным-объектам конкретных объектов имена переменных-объектов можно использовать в кодах процедур вместо имен самих объектов. Пример такого использования показан в листинге 8.3.

Листинг 8.3. Использование переменной-объекта

1: Sub ПримерПеремОбъекта()

2:  Dim WorkingRange As Range

3:

4:  Set WorkingRange = Workbooks("Час8").Worksheets("Лист1").Range("A1:D1")

5:

6:  WorkingRange.Font.Bold = True

7:  WorkingRange.Font.Italic = True

8:  WorkingRange.Font.Name = "Courier"

9:

10: End Sub

В этом листинге имя переменной WorkingRange применяется вместо ссылки на диапазон A1:D1, который находится на рабочем листе Лист1 рабочей книги Час8. Такая замена освобождает от необходимости частого написания длинного полного имени объекта. Далее в этой книге вы найдете другие способы использования переменных-объектов.

При написании кода процедур я придерживаюсь следующего правила: если длинное полное имя объекта используется более двух раз, то его лучше заменить именем переменной-объекта.

Коллекции

Рассмотрим следующее полное имя объекта:

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

Обратите внимание на слова Workbooks и Worksheets - это коллекции. Коллекцией называется группа подобных объектов. В нашем примере Книra1 - это элемент коллекции Workbooks.

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

Чтобы увидеть список доступных коллекций Excel, выполните следующие действия.

  1. Вернитесь в окно справочной системы Visual Basic.

  2. На панели вкладок справочного окна перейдите на вкладку Содержание.

  3. Откройте раздел Microsoft Excel Basic Reference (Базовый справочник по Microsoft Excel).

  4. Выберите тему Microsoft Excel Objects (Объекты Microsoft Excel). Отобразится объектная модель Excel.

  5. Прокрутите вниз содержимое справочного окна. Внизу окна вы увидите обозначения цветовых выделений объектной модели. Желтым цветом выделены объекты и коллекции, голубым - объекты, не являющиеся коллекциями.

Диаграмма объектной модели - отличное средство для ознакомления с коллекциями Excel. После просмотра объектной модели закройте окно справочной системы.