Рис. 12.4. Объектная модель Excel
Другим жизненно важным средством для изучения свойств, методов и событий объектов и их взаимосвязей в приложении является обозреватель объектов в редакторе Visual Basic.
Полное описание обозревателя объектов см. в главе 6.
Выяснение и установка свойств объектов
Вероятно, свойства - это самые простые для понимания характеристики объекта. Каждое свойство хранит информацию о некотором аспекте внешнего вида, поведения, содержимого объекта или, если хотите, о его генеалогии.
Например, объект Document может иметь свойство Pages, говорящее о числе страниц в документе. Объект Shape может иметь свойство Fill, задающее цвет графического элемента. Объекты CornmandButton (представляющие кнопки в диалоговых окнах) имеют свойство Caption, задающее текст, появляющийся на кнопке.
Как правило, VBA-программа может выяснить, какая информация хранится в том или ином свойстве, чтобы затем принять решение о том, следует ли предпринять какие-либо действия или просто отобразить на экране текущие установки свойства. Программа может и, наоборот, изменить установки свойств с тем. чтобы соответствующий объект изменил свой внешний вид или поведение, - но только в том случае, когда свойство допускает такое изменение (многие свойства допускают чтение своих значений, но не их изменение).
Изо всех типов свойств легче всего разобраться со свойствами, задающими различные аспекты внешнего вида объекта. Например, объект Shape в Visio среди прочих свойств имеет следующие.
Свойство
|
Описание
|
Area Ul
|
Площадь графического элемента в специальных внутренних единицах
|
FillStyle
|
Стиль Visio, задающий цвет графического элемента и другие характеристики заливки
|
Text
|
Текст, появляющийся на графическом элементе
|
Эти свойства задают внешний вид объекта в документе.
Свойства, относящиеся к поведению объекта, определяют реакцию объекта на внешние раздражители. Например, элементы управления в формах являются объектами, среди свойств которых свойство Enabled определяет, будет ли соответствующий элемент управления вообще реагировать на такие события, как щелчок кнопки мыши на нем.
Некоторые свойства, например AreaUZ для объекта Shape в Visio, могут принимать любое значение. Другим же допускается назначить только одно из некоторого списка заранее определенных значений. Многие свойства могут принимать только одно из двух возможных значений, таких как True или Falsе. Торячий или Холодный, Сухой или Мокрый.
В любом случае, для выяснения текущего значения свойства или его изменения можно использовать простые операторы VBA.
Знание того, как менять значение свойства, еще не означает, что его можно менять. Некоторые свойства позволяют выяснить свои значения, но не позволяют менять их. Это свойства только для чтения. Существуют также, хотя встречаются значительно реже, свойства только для записи - их значения можно изменить, но прочитать их текущие значения нельзя. Однако большинство свойств предназначено для чтения и записи - их значения можно и прочитать, и изменить.
Главной задачей свойства является описание некоторой характеристики объекта, но вы должны знать, что установки свойства - это обычные данные, в принципе ничем не отличающиеся от тех данных, которые вы размещаете в переменных VBA. А если так, то можно представлять себе свойства как более или менее постоянно существующие переменные, которые не требуется объявлять.
При таком представлении переменных можно говорить, что любое свойство хранит данные определенного типа точно так же, как переменная. Например, свойство, которое может принимать только два взаимоисключающих значения (True или False. Счастливый или Несчастный, Левый или Правый), имеет тип Boolean. Одни свойства являются строками, другие- целочисленными значениями, третьи- десятичными числами с дробной частью или плавающей запятой и т.д. Свойства могут быть и объектами. (О допустимых в VBA типах данных см. главу 7.)
Чтобы выяснить или, как говорится, получить текущее значение свойства, используйте свойство так, как будто это функция или процедура типа Function. А значит, присвойте это свойство некоторой переменной в своем программном коде. Переменная при этом должна иметь тот же тип, что и свойство, или, по крайней мере, иметь подходящий тип.
В следующем примере объект представляет собой, скажем, вопрос для вступительного экзамена. Свойство, значение которого выясняется здесь, описывает сложность вопроса по десятибалльной шкале;
Читать дальше