В статье «Типы данных в Visual Basic (VBA)» мы познакомились с основными простейшими типами в VBA. Но средства VBA нам позволяют создавать свои составные (пользовательские) типы данных, основанные на простейших типах. Для чего это нужно? Например, нам необходимо описать некоторые объекты по следующим параметрам: Длина, Ширина, Глубина, Цвет, Материал и т.д. Это можно сделать двумя способами:
1 — На каждый параметр создать переменную определенного типа
2 — Создать свой пользовательский (составной) тип, содержащий все эти параметры и описать переменную этого типа.
Пока не совсем понятно, что я имел ввиду. Сейчас на примере разберем.
Что нам дает описание собственного типа?
Удобство! В одной переменной вы можете передать множество параметров разного типа. Такой подход значительно упростит код и сделает его легко-читаемым, да и с объектами легче работать.
Как описать свой тип данных в VBA?
В VBA для описания своего типа предусмотрена конструкция:
[Private | Public] Type НазваниеТипа
Элемент1 As Тип
Элемент2 As Тип
….
End Type
где:
Prvate/Public — определяет область видимости нашего типа (private — виден только в текущем модуле, public — виден во всех модулях)
Type — ключевое слово, указывающее на описание нового типа «НазваниеТипа«
Элемент1,2…n — собственно поля простых типов
End Type — конец описания типа.
На примере рассмотрим описание вышеупомянутого составного типа, который содержит несколько элементов описывающих объект.
Описать тип можно в любом модуле, но если таких составных типов в проекте будет не один 10-ок, то для простоты рекомендую выносить их описание в отдельный модуль. Итак, создадим наш тип MyObject с элементами:
Длина, Ширина, Глубина — типа Single
Цвет, Материал — типа String.
Option Explicit Sub TestMyType () ‘ для более удобного обращения к полям объекта obj end sub |
Обратите внимание что когда Вы ставите точку после названия переменной obj у вас выпадает список всех доступных полей.
Вы можете так же составлять новые типы из созданных уже ранее типов т.е.
Type MyObject Public Type MyType |
Обращаться к полю MyType.MyObject.pole1
На этом все! До скорого…