Excel. Трюки и эффекты. Алексей ГладкийЧитать онлайн книгу.
какие-либо действия при изменении его значения. Для решения этой проблемы можно использовать второй способ – создание процедур и функций, которые выполняются при установке и получении значений свойств соответственно. Для этих целей в модуле класса применяются обычные объявления процедур и функций, в которых используется ключевое слово Property.
Для получения значения свойства предназначена функция, объявленная с использованием Property Get:
[Public | Private] [Static] Property Get Имя_свойства ([Аргументы]) _
[As Имя_типа]
[Инструкции]
[Имя_свойства = Выражение]
[Exit Property]
[Инструкции]
[Имя_свойства = Выражение]
End Property
Для присвоения значения свойству, не являющемуся ссылкой на объект, предназначена процедура, объявленная с использованием Property Let:
[Public | Private] [Static] Property Let Имя_свойства ([Аргументы,]Значение)
[Инструкции]
[Exit Property]
[Инструкции]
End Property
Для присвоения значения свойству, являющемуся ссылкой на объект, предназначена процедура, объявленная с использованием Property Set:
[Public | Private] [Static] Property Set Имя_свойства ([Аргументы,]Значение)
[Инструкции]
[Exit Property]
[Инструкции]
End Property
Использование процедур и функций с ключевым словом Property очень удобно для создания свойств только для чтения (для этого свойства не реализуются Property Let и Property Set) и свойств только для записи (не реализуется Property Get).
Разберем реализацию свойств ObjectRef и ObjectType для рассматриваемого класса Class1 (частная переменная-член objRef используется для хранения установленной ссылки на объект):
Private objRef As Object
Property Set ObjectRef(objNewRef As Object)
' Задание ссылки хранимого объекта
Set objRef = objNewRef
End Property
Property Get ObjectRef() As Object
' Возврат ссылки на хранимый объект
Set ObjectRef = objRef
End Property
Property Get ObjectType() As String
' Возврат имени типа хранимого объекта
ObjectType = TypeName(objRef)
End Property
Методы класса
Любая функция или процедура, описанная в модуле класса, является методом этого класса. Методы делятся на общие (описаны с использованием Public) и частные (описаны с использованием Private).
Ниже приведена реализация метода для созданного нами класса Class1, при обращении к которому на экран выводится сообщение со значениями атрибутов класса:
Sub ShowInfo()
' Отображение окна со значением свойства strTag и именем типа _
объекта, на который хранится ссылка
MsgBox "strTag = " & strTag & vbCrLf & _
"Object type = " & ObjectType
End Sub
Использование класса в программе
Как было сказано в начале главы, операции со всеми объектами VBA осуществляет только с использованием ссылок. Объявление ссылок на объекты было рассмотрено в разделе, посвященном переменным в VBA. Здесь будет рассмотрено лишь применение объекта созданного ранее класса Class1. Для создания ссылки на объект можно использовать следующее объявление:
Dim obj As Class1
После создания ссылки сам объект создается с помощью инструкции Set:
Set