Иллюстрированный самоучитель по Microsoft Outlook 2002

Классы и объекты

В VBA предусмотрены специальные процедуры-свойства, которые предназначены для чтения и записи закрытых свойств:

Property Let

Процедура записи позволяет присваивать свойству новые значения:

Property Set

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

Property Get

Процедура чтения (а точнее функция) позволяет считывать значение свойства. Эта процедура применима как к простым свойствам, так и к свойствам-ссылкам.

Приведем синтаксис каждой из них:

[{Public | Private | Friend}] [Static] Property Let имяПроцедурыСвойства
([списокПараметров] значение)
[блокОператоров1}
[Exit Property]
[блокОператоров2]
End Property

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

ИмяПроцедурыСвойства – это имя процедуры, изменяющей свойство.

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

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

Значение – это самый важный обязательный параметр, значение которого передается свойству.

Далее идет блокОператоров, в котором следует произвести присваивание свойству значения фактического параметра значение.

Процедура Property Set имеет следующий синтаксис.

[{Public | Private | Friend}] [Static] Property Set
 имяПроцедурыСвойства ([списокПараметров] ссылкаНаОбъект) [блокОператоров1]
[Exit Property] [блокОператоров2] End Property

Здесь только одно отличие от предыдущей процедуры: вместо аргумента значение стоит аргумент ссылкаНаОбъект, который представляет имя ссылки на объект, присваиваемый свойству-ссылке.

Осталось рассмотреть функцию чтения значения свойства.

[{Public | Private | Friend}] [Static] Property Get
 имяПроцедурыСвойства ([списокПараметров]) As ТипДанных [блокОператоров1]
[имяПроцедурыСвойства = выражение] [Exit Property] [блокОператоров2] End Property

Как видно, Property Get – это функция, и для нее действуют все синтаксические правила функций. Напомним лишь одно: тип значения, возвращаемого функцией, должен совпадать с типом значения выражение.

Рассмотрим использование процедур-свойств на нашем примере класса Person. Поскольку мы объявили свойства класса name, birthday и male 3акрытыми, введем процедуры-свойства для работы с ними. В примере отображена только одна пара для свойства birthday, для name и male все строится аналогично.

Программа 20.27. Использование процедур-свойств.

Public Property Get prsDate() As Date
prsDate = birthday End Property
Public Property Let prsDate(bthday As Date)
If bthday > #1/1/19001 And bthday < # 1 / 1 / 20001 Then
birthday = bthday Else
MsgBox("Incorrect date")
End If
End Property
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.