[Инструкции]
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 obj = New Class1
Объявление переменной ссылки и создание объекта можно также совместить:
Dim obj As New Class1
Для доступа к свойствам и методам объекта используется точка, например:
obj.strTag = «Некоторый текст»
Set obj.ObjectRef = Nothing
MsgBox obj.ObjectType
obj.ShowInfo
Ниже приведен пример процедуры, которая использует реализованный класс
Class1:
Sub TestClass()
' Создание объекта
Dim obj As New Class1
' Установка свойств
Set obj.ObjectRef = New Collection
obj.strTag = "В этом объекте хранится ссылка на объект
Collection"
' Вызов метода
obj.ShowInfo
End Sub