Использование свойств объектов
РАБОТА С ОБЪЕКТАМИ
Использование объектов
Операторы программ 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