Язык VBA позволяет создавать собственные типы данных. Делается это с помощью заявления Type (Type … End Type).
Типы данных, определенные пользователем, могут содержать один или несколько элементов типов данных, массив или предварительно определенные пользователем типы.
После определения пользовательского типа данных, у вас появляется возможность использовать переменные соответствующего типа, которые по своей структуре напоминают записи в базе данных. База данных – это набор записей, которые состоят из нескольких элементов и имеют одинаковую структуру.
Пример объявления пользовательского типа данных
Type Сотрудник
ТабНомер As Integer
Фамилия As String
Имя As String
Отчество As String
Зарплата As Currency
Адрес As String
End Type
В данном примере, мы объявили новый пользовательский тип данных – Сотрудник. Он состоит из:
- целого значения – ТабНомер;
- четырёх строковых значений – Фамилия, Имя, Отчество, Адрес;
- значения типа Currency – Зарплата.
Важно!
Тип данных, определённый пользователем, можно определить только на уровне модуля. Делается это в разделе объявлений, в самом начале модуля.
Внутри процедуры, объявлять пользовательский тип нельзя.
После объявления, пользовательский тип данных становится доступным для определения переменных и массивов. Чтобы объявить переменную пользовательского типа можно использовать операторы Dim, Public или Private.
Оператор Dim объявляет и выделяет дисковое пространство для одной или нескольких переменных.
Оператор Public описывает пользовательских переменные, которые должны быть доступны для всех процедур во всех модулях всех проектов.
Оператор Private используют для описания пользовательских переменных, которые должны быть доступны только в том модуле, в котором они объявлены.
Чтобы получить доступ к элементу, который входит в состав пользовательского типа данных, необходимо идентифицировать этот элемент. Для этого нужно:
- Указать имя переменной.
- После переменной поставить точку.
- После точки указать имя требуемого элемента.
Пример получения доступа к элементам пользовательского типа данных
Type Сотрудники
ТабНомер As Integer
Фамилия As String
Имя As String
Отчество As String
Зарплата As Currency
Адрес As String
End Type
Sub myVar()
Dim Слесарь As Сотрудники
Слесарь.ТабНомер = 1
Слесарь.Фамилия = "Иванов"
Слесарь.Имя = "Иван"
Слесарь.Отчество = "Иванович"
Слесарь.Зарплата = 28000
Слесарь.Адрес = "г. Киев, ул. Гийома де Боплана, 2"
MsgBox Слесарь.ТабНомер
MsgBox Слесарь.Фамилия
MsgBox Слесарь.Имя
MsgBox Слесарь.Отчество
MsgBox Слесарь.Зарплата
MsgBox Слесарь.Адрес
End Sub
Результатом выполнения данного кода, будет поочерёдное отображение окна со следующей информацией:
1
Иванов
Иван
Иванович
28000
г. Киев, ул. Гийома де Боплана, 2
Запись в примере выше можно сократить с помощью операторов With … End With
Sub myVar()
Dim Слесарь As Сотрудники
With Слесарь
.ТабНомер = 1
.Фамилия = "Иванов"
.Имя = "Иван"
.Отчество = "Иванович"
.Зарплата = 28000
.Адрес = "г. Киев, ул. Гийома де Боплана, 2"
End With
MsgBox Слесарь.ТабНомер
MsgBox Слесарь.Фамилия
MsgBox Слесарь.Имя
MsgBox Слесарь.Отчество
MsgBox Слесарь.Зарплата
MsgBox Слесарь.Адрес
End Sub 