Мова VBA дозволяє створювати власні типи даних. Робиться це за допомогою заяви Type (Type … End Type).
Типи даних, визначені користувачем, можуть містити один або кілька елементів типів даних, масив або попередньо визначені користувачем типи.
Після визначення типу даних користувача, у вас з'являється можливість використовувати змінні відповідного типу, які за своєю структурою нагадують записи в базі даних. База даних – це набір записів, які складаються з кількох елементів та мають однакову структуру.
Приклад оголошення типу даних користувача
Type Employees
PerNumber As Integer
Surname As String
Name As String
MiddleName As String
Salary As Currency
Address As String
End Type
В цьому прикладі, ми оголосили новий тип даних користувача – Employees. Він складається з:
- цілого значення – PerNumber;
- чотирьох рядкових значень – Surname, Name, MiddleName, Address;
- значення типу Currency – Salary.
Важливо!
Тип даних, визначений користувачем, можна визначити лише на рівні модуля. Робиться це в розділі оголошень, на початку модуля.
Всередині процедури, оголошувати користувацький тип не можна.
Після оголошення, користувальницький тип даних стає доступним для визначення змінних і масивів. Щоб оголосити змінну користувацького типу можна використовувати оператори Dim, Public або Private.
Оператор Dim оголошує та виділяє дисковий простір для однієї або кількох змінних.
Оператор Public описує користувацькі змінні, які повинні бути доступні для всіх процедур у всіх модулях всіх проектів.
Оператор Private використовують для опису користувацьких змінних, які повинні бути доступні тільки в тому модулі, в якому вони оголошені.
Щоб отримати доступ до елемента, який входить до складу типу даних користувача, необхідно ідентифікувати цей елемент. Для цього потрібно:
- Вказати ім'я змінної.
- Після змінної поставити крапку.
- Після крапки вказати ім'я необхідного елемента.
Приклад отримання доступу до елементів користувцького типу даних
Type Employees
PerNumber As Integer
Surname As String
Name As String
MiddleName As String
Salary As Currency
Address As String
End Type
Sub myVar()
Dim Mechanic As Employees
Mechanic.PerNumber = 1
Mechanic.Surname = "Іванов"
Mechanic.Name = "Іван"
Mechanic.MiddleName = "Іванович"
Mechanic.Salary = 28000
Mechanic.Address = "м. Київ, вул. Гійома де Боплана, 2"
MsgBox Mechanic.PerNumber
MsgBox Mechanic.Surname
MsgBox Mechanic.Name
MsgBox Mechanic.MiddleName
MsgBox Mechanic.Salary
MsgBox Mechanic.Address
End Sub
Результатом виконання цього коду буде почергове відображення вікна з наступною інформацією:
1
Іванов
Іван
Іванович
28000
м. Київ, вул. Гійома де Боплана, 2
Запис із вищезгаданого прикладу можна скоротити за допомогою операторів With … End With
Type Employees
PerNumber As Integer
Surname As String
Name As String
MiddleName As String
Salary As Currency
Address As String
End Type
Sub myVar()
Dim Mechanic As Employees
With Mechanic
.PerNumber = 1
.Surname = "Іванов"
.Name = "Іван"
.MiddleName = "Іванович"
.Salary = 28000
.Address = "м. Київ, вул. Гійома де Боплана, 2"
End With
MsgBox Mechanic.PerNumber
MsgBox Mechanic.Surname
MsgBox Mechanic.Name
MsgBox Mechanic.MiddleName
MsgBox Mechanic.Salary
MsgBox Mechanic.Address
End Sub