В VBA у пользователя имеется возможность создавать собственные объекты. Модули класса содержат информацию о создаваемых пользователем объектах. Модуль класса содержит код, используемый для создания объектов, задания их свойств, код методов объектов. Имя соответствующего объекта (точнее класса объектов) используется в качестве имени модуля класса.
При описании свойств и методов нового объекта используется специальный синтаксис.
В объектно-ориентированном программировании используется понятие абстракции. Абстракция – выделение только тех свойств, которые существенны, интересны на определенном уровне рассмотрения. Классы определяют информацию об объекте, действия, выполняемые объектом и над объектом. Класс – это «проект» объектов. Объекты, созданные на основе одного и того же класса, обладают одинаковым набором свойств и методов, но значения свойств могут быть разными, они задаются при порождении экземпляра объекта определенного класса. Экземпляром класса называется объект, созданный на основе класса. На основе одного и того же класса можно создать произвольное количество экземпляров.
Для создания собственного класса необходимо выполнить команду Вставка 4 Модуль класса. После выполнения этой команды в окне проекта у текущего проекта появляется ветвь, представляющая новый класс, и открывается окно модуля этого класса. Для ввода имени нового класса вместо присвоенного ему при создании стандартного имени нужно открыть окно свойств этого компонента и изменить соответствующее свойство (Name). Других свойств у класса пока нет.
При создании свойств класса требуется предусмотреть возможность выполнения двух операций: получения текущего значения свойства и установки значения свойства. Эти операции выполняются с помощью процедур Property Get и Property Let. В заголовках этих процедур указывается имя соответствующего свойства.
Процедура Property Let используется для установки значения свойства. Основной функцией этой процедуры является проверка того, является ли устанавливаемое значение допустимым. Устанавливаемое значение всегда задается в инструкции Property Let(заголовке процедуры) последним параметром. Переданное при обращении к процедуре значение аргумента, если оно соответствует условию допустимости, становится текущим значением свойства и запоминается в переменной уровня модуля, доступной в любой процедуре модуля класса.
Процедура Property Get используется для получения текущего значения свойства. Данная процедура просто должна присвоить значение соответствующей переменной уровня модуля свойству (т.е. эта процедура должна содержать оператор присваивания, в левой части которого указывается имя свойства).
Свойства можно создать автоматически с помощью диалогового окна команды Вставка 4 Процедура. В поле «Имя» диалогового окна «Вставка процедуры» задается имя свойства. Переключатель группы «Тип» устанавливается в позиции «Свойство». Если свойство имеет общую область определения, т.е. доступно для просмотра и изменения программисту, использующему объект, то следует установить в группе «Область определения» переключатель «Общая», если же свойство можно использовать только в модуле класса, то выбирается переключатель «Личная». Скрытые, недоступные для использования программистом компоненты можно просмотреть с помощью команды Показать скрытые компоненты контекстного меню окна просмотра объектов.
В результате выполнения программы в модуль класса вставляются «заготовки» процедур. Например, если с объектом связан файл, имя этого файла является свойством этого объекта. Описания переменной для хранения этого свойства при работе с объектом и процедур установки/получения значения свойства могут быть следующими:
Dim Pic_File As String‘ Имя файла объекта
Public Property Get Файл() As String
' Свойство, указывающее файл, в котором хранится объект