Excel. Трюки и эффекты. Алексей Гладкий

Чтение книги онлайн.

Читать онлайн книгу Excel. Трюки и эффекты - Алексей Гладкий страница 25

Excel. Трюки и эффекты - Алексей Гладкий

Скачать книгу

в VBA

      Язык программирования VBA является объектно-ориентированным, хотя и не поддерживает наследование и полиморфизм. VBA-программист может работать с встроенными классами, а также создавать и использовать свои собственные классы.

      Создание класса на VBA

      Создание класса на VBA отличается от других языков программирования (таких как C++), в которых описание классов во многом аналогично описанию структур.

      В VBA для каждого класса в проект должен быть добавлен отдельный модуль, в который помещается код, реализующий работу класса, – модуль класса. Добавление нового модуля класса осуществляется с помощью команды меню Insert → Class Module (Вставить → Модуль класса) редактора Visual Basic. Имя модулю класса присваивается с помощью окна Properties (Свойства), которое показано на рис. 1.3.

      Имя, которое присвоено добавленному модулю, и будет являться именем нового класса. В данном случае имя созданного класса – Class1. В качестве примера с помощью этого класса будет реализовано хранение ссылки на объект, а также хранение некоторой информации об объекте.

      Рис. 1.3. Назначение имени классу

      Свойства класса

      Свойства для классов в VBA могут быть реализованы двумя способами. Первый способ – это использование в модуле класса общих переменных-членов (объявленных с атрибутом Public). Добавим таким способом свойство в созданный ранее класс Class1, в котором будет храниться строка с описанием данных, содержащихся в объекте-экземпляре этого класса:

      Public strTag As String

      Такой способ реализации свойств является самым простым, однако в нем не предусмотрена возможность контролировать правильность задания параметра и осуществлять какие-либо действия при изменении его значения. Для решения этой проблемы можно использовать второй способ – создание процедур и функций, которые выполняются при установке и получении значений свойств соответственно. Для этих целей в модуле класса применяются обычные объявления процедур и функций, в которых используется ключевое слово 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 очень удобно для создания свойств только для чтения (для этого свойства

Скачать книгу