Определение аргументов методов и свойств




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

Если вы полностью изучили первую часть этой главы, то должны иметь представление о VBA и знать основные методы управления модулями VBA в редакторе Visual Basic. Кроме того, вы ознакомились с примерами кода VBA, а в предыдущих разделах уже встречались с такими элементами, как объекты и свойства. В этом разделе приводится дополнительная ин­формация об объектах и коллекциях объектов.

Работая с кодом VBA, вы должны четко понимать назначение объектов и объектной мо­дели Excel. Целесообразнее рассматривать объекты с точки зрения иерархической структуры.

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

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

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

Workbooks (коллекция всех объектов Workbook —рабочих книг);

Windows (коллекция всех объектов Window — окон);

Addlns (коллекция всех объектов Addln — надстроек).

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

Worksheets (коллекция объектов Worksheet — рабочих листов);

Charts (коллекция объектов Chart —диаграмм);

Names (коллекция объектов Name — имен).

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

ChartObjects (коллекция объектов. ChartQb ject — элементов диаграмм);

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

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

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

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

Worksheets ("Лист1"). Range (" Al ")

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

Range (" Al ")

Свойства и методы

Запутаться в свойствах и методах несложно: их существует несколько тысяч. В этом раз­деле показано, как осуществляется доступ к свойствам и методам объектов.

Свойства объектов

Все объекты обладают свойствами. Например, объект Range обладает свойством с названием Value. Вы можете создать оператор VBA, чтобы отобразить свойство Value или задать свойству Value определенное значение. Ниже приведена процедура, использующая функцию VBA MsgBox для отображения окна, в котором представлено значение ячейки А1 листа Лист1 активной рабочей книги.

Sub ShowValue()

MsgBox Worksheets("Лист1").Range("Al").Value

End Sub

Код предыдущего примера отображает текущее значение свойства Value для конкретной ячейки — А1 рабочего листа Лист1 активной рабочей книги. Обратите внимание, что если в активной книге отсутствует лист с названием Лист1, то макрос выдаст ошибку.

MsgBox— полезная функция, часто используемая для отображения результатов выполнения операторов VBA. В этой книге она применяется очень часто.

Что необходимо сделать, чтобы изменить свойство Value? Ниже приведена процедура по изменению значения ячейки А1 путем определения значения свойства Value.

Sub ChangeValue((

Worksheets("Лист1").Range("Al").Value = 123

End Sub

После выполнения этой процедуры ячейка Al листа Лист1 получает значение 123. Вы можете ввести описанные процедуры в модуль и протестировать их.

Многие объекты имеют свойство по умолчанию. Для объекта Range свойством по

умолчанию является Value. Следовательно,

выражение. value

в приведенном выше коде можно опустить, и ничего не изменится. Однако лучше включать ссылку на свойство, даже если оно используется по умолчанию.

Методы объектов

Кроме свойств, объекты характеризуются методами. Метод — это действие, которое вы­полняется над объектом. Ниже приведен простой пример использования метода clear по отношению к диапазону ячеек. После выполнения этой процедуры ячейки А1: СЗ листа Лист1 станут пустыми, и дополнительное форматирование ячеек будет удалено.

Sub ZapRange()

Worksheets("Лист1").Range("Al:СЗ").Clear

End Sub

Если необходимо удалить значения в диапазоне, но оставить форматирование, используй­те метод ClearContents объекта Range.

Многие методы получают аргументы, определяющие выполняемые над объектом дейст­вия более детально. Далее приводится пример, в котором ячейка А1 копируется в ячейку В 1 с помощью метода Сору объекта Range - В данном примере метод Сору получает один аргу­мент (адрес ячейки, в которую следует скопировать данные). Обратите внимание, что в при­мере используется символ продолжения строки (пробел и подчеркивание). Вы можете не применять этого символа, а ввести оператор в одну строку.

Sub CopyOne()

Worksheets ("Лист1").Range("Al").Copy _

Worksheets("Лист 1 ").Range ("B1")

End Sub

Определение аргументов методов и свойств

В среде программистов VBA определение аргументов методов и свойств часто вызывает оп­ределенные трудности. Некоторые методы используют аргументы для дальнейшего уточнения действия; отдельные свойства используют аргументы для дальнейшего определения значения свойства. Иногда один или несколько аргументов вообще применять не обязательно.

Если метод использует аргументы, они указываются после названия метода и разделяются запятыми. Если метод использует необязательные аргументы, то можете пропустить их, оставив пустые места. Рассмотрим метод protect объекта рабочей книги. В справочной системе дается информация о том, что метод Protect имеет три аргумента: пароль, структура, окна. Эти аргументы соответствуют параметрам в диалоговом окне Защита книги.

К примеру, если требуется защитить рабочую книгу под названием MyBook. xls, используй­те такой оператор:

Workbooks("MyBook.xls").Protect "xyzzy", True, False

В данном случае рабочая книга защищена паролем (аргумент 1). Также защищена структура рабочей книги (аргумент 2), но не ее окна (аргумент 3).

Если вы не хотите присваивать пароль, можно применить такой оператор:

Workbooks("MyBook.xls").Protect, True, False

Обратите внимание, что первый аргумент пропущен, а его место обозначено с помощью запятой.

Существует и другой подход (причем в этом случае программу удобнее будет читать) — использование именованных аргументов. Применим именованные аргументы для предыдуще­го примера.

Workbooks("MyBook.xls").Protect Structure:=True, _

Windows:=False

Использование именованных аргументов — хорошая идея, особенно в методах с большим количеством необязательных аргументов, когда следует использовать только некоторые из них. При использовании именованных аргументов не требуется оставлять место для пропу­щенных аргументов.

Для свойств, использующих аргументы, аргументы указываются в скобках. Например, свой­ство Address объекта Range имеет пять аргументов — все необязательные. Показанный ниже оператор некорректен, так как пропущены скобки:

MsgBox Range ("Al").Address False 'некорректно

Правильный синтакис для этого оператора выглядит так:

MsgBox Range ("Al").Address(False)

Кроме того, оператор может записываться с использованием именованного аргумента.

MsgBox Range ("Al").Address(rowAbsolute:=False)

Подобные тонкости применения методов и свойств вскоре станут для вас привычным де­лом,

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-04-14 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: