Пользовательские типы данных VBA

Типы данных, определенные пользователем в VBA. Урок №16

Язык VBA позволяет создавать собственные типы данных. Делается это с помощью заявления Type (Type … End Type).

Типы данных, определенные пользователем, могут содержать один или несколько элементов типов данных, массив или предварительно определенные пользователем типы.

После определения пользовательского типа данных, у вас появляется возможность использовать переменные соответствующего типа, которые по своей структуре напоминают записи в базе данных. База данных – это набор записей, которые состоят из нескольких элементов и имеют одинаковую структуру.

Пример объявления пользовательского типа данных

Type Сотрудник
ТабНомер As Integer
Фамилия As String
Имя As String
Отчество As String
Зарплата As Currency
Адрес As String
End Type

В данном примере, мы объявили новый пользовательский тип данных – Сотрудник. Он состоит из:

  • целого значения – ТабНомер;
  • четырёх строковых значений – Фамилия, Имя, Отчество, Адрес;
  • значения типа Currency – Зарплата.

После объявления, пользовательский тип данных становится доступным для определения переменных и массивов. Чтобы объявить переменную пользовательского типа можно использовать операторы Dim, Public или Private.

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

  1. Указать имя переменной.
  2. После переменной поставить точку.
  3. После точки указать имя требуемого элемента.

Пример получения доступа к элементам пользовательского типа данных

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

Запись в примере выше можно сократить с помощью операторов With … End With

Sub myVar()
    Dim Слесарь As Сотрудники
        With Слесарь
            .ТабНомер = 1
            .Фамилия = "Иванов"
            .Имя = "Иван"
            .Отчество = "Иванович"
            .Зарплата = 28000
            .Адрес = "г. Киев, ул. Гийома де Боплана, 2"
        End With
        
    MsgBox Слесарь.ТабНомер
    MsgBox Слесарь.Фамилия
    MsgBox Слесарь.Имя
    MsgBox Слесарь.Отчество
    MsgBox Слесарь.Зарплата
    MsgBox Слесарь.Адрес
End Sub

Main Menu