Использование свойств объектов

РАБОТА С ОБЪЕКТАМИ

 

Использование объектов

 

Операторы программ VBA, использующие объекты, обычно выполнявши одно или несколько следующих действий:

· определяют текущее состояние или статус объекта путем выборки значения, сохраняемого в определенном свойстве;

· изменяют состояние или статус объекта установкой значения, сохраненного в определенном свойстве;

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

Например, можно определить имя активного в данный момент рабочего листа в Excel, выполняя выборку строки, сохраняемой в свойстве Nameрабочего листа. (Свойство Nameрабочего листа содержит имя рабочего листа, как показано на ярлыке листа.) Чтобы изменить имя рабочего листа, необходимей присвоить новую строку свойству Nameэтого рабочего листа. Для добавления рабочего листа в рабочую книгу используется метод Addрабочей книги.

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

В операторах VBA используется следующий общий синтаксис для определения свойства или метода объекта:

 

Object.identifier

 

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

Identifier – любое допустимое имя свойства или метода; VBA отображает сообщение о runtime-ошибке при попытке использовать свойства или методы, которые не являются в действительности частью указанного объекта.

Например Word-процедура, выводящая имя активного документа имеет вид:

 

Пример 1. Активный документ

Sub ActDocum()

MsgBox "Активный документ: " & ActiveDocument.Name

End Sub

 

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

В табл. 1 приведены несколько из наиболее важных объектов (с точки рения программиста VBA) в Excel 2000/2002. В таблице показано имя объекта и краткое описание этого объекта.

 

Таблица 1 Общие объекты Excel

Объект Описание
Application Приложение Excel
Chart Диаграмма в рабочей книге
Font Объект, содержащий атрибуты шрифта и стиля для текста, отображаемого в рабочем листе
Name Заданное имя для диапазона ячеек рабочего листа
Range Диапазон ячеек (одна или более) или именованный диапазон в рабочем листе
Window Любое окно Excel; окна используются для отображения рабочих листов, диаграмм и т.д.
Workbook Открытая рабочая книга
Worksheet Рабочая таблица в книге

 

Использование свойств объектов

 

Свойства объектов можно использовать только двумя способами: получатъ значение свойства или устанавливать его. Не все свойства объекта изменяемы. Свойства объектов, которые нельзя изменять, называют свойствами, доступными только не чтение (read-only), свойства, которые можно устанавливать, называют свойствами, доступными на чтение/запись (read-write).

Свойства обычно содержат численные, строковые, значения типа Boolean, хотя некоторые свойства могут возвращать значения типа Object или другие типы данных.

Обращение к свойству объекта имеет следующий синтаксис:

 

Object.property

Object –допустимая объектная ссылка VBA;

property –любое допустимое имя свойства для объекта, на который выполняется ссылка.

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

Чтобы получить значение свойства и его присвоить некоторой переменной значение свойства объекта, использовать следующий синтаксис:

 

Variable = Object.Property

 

Variable – любая допустимая переменная, имеющая совместимый со свойством объекта тип;

Object – любая допустимая ссылка на объект;

Property – любое допустимое имя свойства для объекта, на который выполняется ссылка.

 

Пример 2.

 

Sub gg()

Dim AnyStr As String

AnyStr = ActiveSheet.Name

MsgBox AnyStr

End Sub

 

 

Строка, сохраняемая в свойстве Name рабочего листа Excel и на которую ссылается объектная переменная ActiveSheet, присваивается переменной AnyStr.

Можно также использовать свойство объекта непосредственно в каком-либо выражении или в качестве аргумента функции или процедуры. Следующие строки представляют обоснованное использование свойства объекта (в каждой строке ActiveSheet.Name является объектной переменной, заданной для ссылки на рабочий лист Excel):

 

MsgBox ActiveSheet.Name

 

AnyStr = "Эта книга имеет имя: " & ActiveSheet.Name

 

MsgBox LCase(ActiveSheet.Name)

 

Почти каждый объект в VBA имеет свойство, которое содержит его имя. Следующий оператор использует MsgBoxдля отображения свойства FullName – объекте рабочей книги Excel; свойство FullNameсодержит имя диска, путь папке и имя файла рабочей книги:

 

MsgBox ThisWorkbook.FullName

 

В приведенном выше примере ThisWorkbook– это переменная, заданная для ссылки на объект открытой рабочей книги. Если ThisWorkbookссылается на рабочую книгу с именем Sales.xlsв папке My Documents,то окно сообщения, вызываемое приведенным выше оператором, отображает строку "C:\My Documents \SALES.XLS".

Чтобы задать (установить) свойство объекта, надо присвоить свойству новое значение, используя следующий синтаксис:

 

Object.Property = Expression

 

Object – любая допустимая объектная ссылка;

Property – любое свойство объекта, на который выполняется ссылка;

Expression – любое выражение VBA, которое вычисляется до типа, совместимого со свойством.

 

Изменить имя рабочего листа, на который ссылается объектная переменная InstSheet,присваивая значение свойству Nameлиста можно следующим образом:

 

Sub rename()

ActiveSheet.Name = "Первый квартал"

End Sub

 

Изменить текст, отображаемый в строке состояния в нижнем левом углу окна приложения, присваивая строку свойству StatusBarобъекта Application(объект Application– это host-приложение VBA, в данном случае – Excel) можно так:

 

Sub rename()

Application.StatusBar = "Генерировать отчет за третий квартал"

Application.StatusBar = False

End Sub

 

Свойство Application.StatusBar можно использовать в своих процедурах для отображения сообщений о действиях, которые выполняет процедура, особенно если некоторые из этих действий занимают много времени (например, сортировка длинного списка). Добавляя сообщение в строку состояния, пользователю дается знать, что процедура все еще работает.

Когда процедура выполнена надо возвратиь управление строке состояния при работе в Excel. Для этого необходимо устанавливать свойство Application.StatusBar в False, иначе Excel продолжает отображать заданное сообщение строки состояния.

 

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

 

Таблица 2. Наиболее употребительные свойства объектов

Свойство Тип/Что означает Где найти
ActiveCell Object: активная ячейка в рабочем листе Application, Window
ActiveChart Object: активная диаграмма Application, Window, Workbook
ActiveSheet Object: активный лист Application, Window, Workbook
Address Возвращает координаты ячейки указанного объекта Range
Cells Диапазон объекта Range Application, Range, Worksheet
Charts Коллекция диаграмм Application, Workbook
Count Integer: число объектов в коллекции Все объекты коллекции
Fofmula String: формула для ячейки рабочего листа Диапазон
Index Integer: число объектов в коллекции Worksheet
Name String: имя объекта Application, Workbook и в других объектах
Path String: драйвер и каталог, в котором сохранен объект Addln, Application, Workbook
Saved Boolean: сохранялась ли рабочая книга после последних изменений Workbook
Selection Object: текущий выделенный фрагмент Application, Window
Sheets Коллекция листов рабочей книги Application, Workbook
StatusBar String: сообщение в статусной строке Application
ThisWorkBook Object: рабочая книга, из которой выполняется текущая процедура Application
Type Integer: число, указывающее тип объекта Window, Worksheet, Chart
Visible Boolean: отображается или нет объект на экране Application, Worksheet, Range и в других объектах
Value (варьируется): действительное значение, отображаемое в ячейке Range
Workbooks Коллекция рабочих книг Application
Worksheets Коллекция рабочих листов Application, Workbook

 

Пример 3. Активный лист, ячейка

 

Sub TestObjectOl()

'имя активного листа

MsgBox ActiveSheet.Name

'адрес активной ячейки:

MsgBox ActiveCell.Address

'содержимое активной ячейки

MsgBox ActiveCell.Formula

'путь сохранения документа

MsgBox ThisWorkbook.Path

'отображение полного имени файла

MsgBox ThisWorkbook.FullName

'закрытие активного документа

ThisWorkbook.Close

End Sub