Перейти к содержимому

VBA Excel. Пользовательские типы данных (оператор Type)

Создание пользовательских типов данных в VBA Excel. Оператор Type, его описание и параметры. Создание массива «одномерных массивов» с пользовательскими данными.

  1. Определение пользовательских типов данных
  2. Синтаксис и параметры оператора Type
  3. Применение пользовательских типов данных

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

Пользовательский тип данных в VBA Excel представляет из себя набор элементов, каждому из которых пользователем присваивается свой тип данных. Другими словами, пользовательский тип данных - это набор данных разного типа, который может быть присвоен одной переменной.

Если простую переменную (не массив) объявить с пользовательским типом данных, она будет представлять из себя «одномерный массив»* с элементами разных типов данных, определенных пользователем.

Если с пользовательским типом данных объявить переменную массива, она будет представлять из себя массив «одномерных массивов»* пользовательских данных.

* Выражение «одномерный массив» взято в кавычки, так как фактически это не массив, а набор пользовательских данных, но для практического применения это не имеет значения.

Синтаксис и параметры оператора Type

Синтаксис оператора Type

Type Name
Element_1 as Tip
Element_2 as Tip
Element_3 as Tip
----------------
Element_n as Tip
End Type

Пользовательский тип данных в VBA Excel может быть объявлен с ключевым словом Public или Private, которое явно укажет зону его видимости. Если ключевое слово опущено, конструкция с оператором Type по-умолчанию объявляется с зоной видимости Public.

Параметры оператора Type

Параметр Описание
Name Имя пользовательского типа данных, по которому этот тип данных будет присваиваться переменным.
Element Наименование отдельного элемента пользовательского типа данных.
Tip Тип данных отдельного элемента (стандартный тип VBA).

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

Применение пользовательских типов данных в VBA Excel рассмотрим на примере домиков для животных.

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

Объявление пользовательского типа данных (конструкция с оператором Type) размещается в самом начале модуля в разделе Declarations.

Пример 1

Type Domik
naimenovaniye As String
obyem_m3 As Single
material As String
kolichestvo As Long
End Type

В этом примере:

  • Domik - имя, по которому этот тип данных будет присваиваться переменным;
  • naimenovaniye - наименование домика для животных;
  • obyem_m3 - объем домика в куб. метрах;
  • material - материал, из которого сделан домик;
  • kolichestvo - количество домиков на складе.

Заполнение данными массива

Обычно в качестве контейнеров для пользовательских типов данных в VBA Excel используются массивы. В простую переменную можно уместить только один набор пользовательских данных, а в массив - сколько нужно. В следующем примере мы заполним трехэлементный массив тремя наборами пользовательских данных.

Если представить набор пользовательских данных как «одномерный массив», то таким образом мы создадим массив «одномерных массивов» с пользовательскими данными.

Пример 2

Sub Primer2()
'Объявляем трехэлементный массив
'с пользовательским типом данных
Dim a(1 To 3) As Domik
'Заполняем первый элемент массива
a(1).naimenovaniye = "Скворечник"
a(1).obyem_m3 = 0.02
a(1).material = "сосна"
a(1).kolichestvo = 15
'Заполняем второй элемент массива
a(2).naimenovaniye = "Собачья будка"
a(2).obyem_m3 = 0.8
a(2).material = "береза"
a(2).kolichestvo = 5
'Заполняем третий элемент массива
a(3).naimenovaniye = "Клетка кролика"
a(3).obyem_m3 = 0.4
a(3).material = "металл"
a(3).kolichestvo = 6
End Sub

Обращение к пользовательским данным в массиве

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

Пример 3

'Считываем информацию из массива
Dim b As Variant
b = a(2).naimenovaniye
MsgBox b
b = a(3).obyem_m3
MsgBox b
b = "Мы продаем следующие товары: " _
& a(1).naimenovaniye & ", " _
& a(2).naimenovaniye & " и " _
& a(3).naimenovaniye
MsgBox b

Для наглядной демонстрации вставьте строки кода Примера 3 перед строкой End Sub Примера 2.

Добавить комментарий

Ваш комментарий будет опубликован после прохождения обязательной модерации. Исходящие ссылки не допускаются. Время модерации составит от нескольких минут до нескольких часов в зависимости от времени суток и занятости модератора.