52953.fb2 VBA для чайников - читать онлайн бесплатно полную версию книги . Страница 125

VBA для чайников - читать онлайн бесплатно полную версию книги . Страница 125

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

Private sngDegrees As Single ' переменная свойства

' Программный код процедуры свойства Let Temperature:

Public Property Let Temperature(ByVal snglnput As _

Single)

sngDegrees = snglnput

End Property

' Программный код процедуры свойства Get Temperature:

Public Property Get Temperature() As Single

temperature = sngDegrees

End Property

' Программный код процедуры метода CalculateEnergyUse:

Public Sub CalculateEnergyUse()

Const cstConversionFactor =2.45

Dim dblResult

dblResult = sngDegrees * 365 * cstConversionFactor

MsgBox "Годовой расход энергии на поддержание " & _

"установок термостата оценивается в " & _

dblResult & " Ватт."

End Sub

Объявление переменных класса

Для объявления переменных, которые понадобятся в нескольких свойствах или методах, используйте раздел Declarations в самом начале модуля класса. Всегда объявляйте эти переменные как локальные ( Private ), ведь объекты в основном предназначены для того, чтобы запретить программе получить прямой доступ к данным. Переменные, которые будут использоваться только в одном свойстве или методе, должны там и объявляться.

Для каждого из свойств объекта нужно объявить как минимум по одной переменной. Имя переменной не должно совпадать с именем свойства (чуть позже я объясню, как задать имя свойства).

Можно объявить и другие данные, которые объект будет использовать внутри себя и которые будут недоступными для других частей вашей программы.

Создание процедур свойств

Секрет наделения объекта свойством состоит в написании пары специальных процедур - процедур свойств Property Let и Property Get. Обе процедуры в паре должны иметь одинаковые имена.

Именем свойства будет то, которое вы выберете для процедур Property Let и Property Get. Ясно, что оно должно описывать содержимое или функцию свойства.

Да, и еще: если создаваемое свойство будет представлять ссылку на другой объект, вместо процедуры Property Let в вышеуказанной паре процедур используйте процедуру Property Set. В остальном такое свойство ничем не отличается от свойств, использующих другие типы данных.

Установка свойств объекта с помощью процедур Property Let

Процедура Property Let устанавливает значение свойства. В своей простейшей форме процедура Property Let берет переданное ей в виде аргумента значение и присваивает его переменной, представляющей свойство. В предыдущем примере это выглядело так:

Public Property Let Temperature(ByVal snglnput As Single)

sngDegrees = snglnput

End Property

Когда в основной части программы выполняется оператор, устанавливающий свойство, например

Ther most at.Temperature = 75

VBA вызывает процедуру Let Temperature со значением 75 для ее аргумента.

Ясно, что процедуры свойств не обязаны содержать лишь по одной строке программного кода. Можно добавить и другие операторы, например, проверяющие введенное значение на допустимость прежде, чем присвоить его свойству, или выполняющие какие-то иные действия.

Чтение свойств объекта с помощью процедур Property Get

Процедура Property Get подобна процедуре типа Function в том смысле, что она возвращает значение - конечно же, значение свойства, Как и в случае процедуры типа Function, значение, которое должно быть возвращено, присваивается имени процедуры, которое в данном случае оказывается именем свойства. Вот опять фрагмент предыдущего примера:

Public Property Get Temperaturef) As Single

Temperature = sngDegrees

End Property

Другие части вашей программы могут вызывать процедуру Get Temperature, чтобы присвоить возвращаемое этой процедурой значение переменной либо использовать это возвращаемое значение в условных операторах, как в следующем примере: sngCurrent Setting = Thermostat.Temperature

If Thermostat.Temperature > 80 Then

MsgBox "Рекомендуется снизить температуру!"

End If

Создание методов

Методы представляют собой обычные процедуры типов Sub и Function, которым выпало разместиться в модуле класса. Конечно, в большинстве случаев метод должен делать нечто, напрямую связанное с самим объектом, преобразуя данные, хранимые объектом. Но, при желании, в любой класс можно добавить и метод, рассчитывающий цены на прошлогодний снег.

VBA автоматически ассоциирует создаваемые вами методы с классами, в которые вы эти методы добавляете. Созданные вами методы можно вызывать из других частей программы точно так же, как и методы встроенных объектов.

Использование своих собственных объектов

Объекты, основанные на созданных вами классах, используются аналогично встроенным объектам VBA и объектам вашего приложения.

1. Объявите переменную для объекта, например:

Dim objCustomThermostat As Thermostat

2. Используйте оператор Set, чтобы создать реальный объект, с которым предполагается работать, например:

Set objCustomThermostat = New Thermostat

3. Получите доступ к свойствам объекта или вызовите его методы, используя при этом стандартный синтаксис VBA, например: