Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




VBA поддерживает возможность создавать пользовательские типы данных на основе ранее определенных типов. Такой тип в VBA называется User-defined type (UDT) - тип, определенный пользователем. Это соответствует понятиям типа данных record (запись) в языке Pascal или struct (структура) в языке С/С++. Для создания пользовательского типа предназначен оператор Type. Он позволяет на уровне модуля определить структуру данных, включающую другие разнородные, но логически связанные переменные различных типов. После описания типа на его основе можно создавать и использовать переменные.

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

Type <имяТипа> <имяЭлемента1> As <тип> <имяЭлемента2> As <тип> End Type

где:

<имяТипа> – имя пользовательского типа данных;

<имяЭлемента> – имя структуры, составляющей новый тип данных.

С помощью ключевых слов Private и Public можно задать область видимости создаваемого типа. Опции Private и Public указываются в строке объявления типа перед ключевым словом Type.

Листинг 21. Пример использования пользовательского типа

' Тип TStudent хранит информацию о студенте. Public Type TStudent ID As Long 'идентификатор LastName As String 'фамилия FirstName As String 'имя MiddleName As String 'отчество BirthDay As Date 'дата рождения End Type ' Учебная группа Public Type TGroup Num As String * 10 'номер группы Students() As TStudent 'список (массив) студентов End Type ' Объявления переменных Private stud As TStudent ' студент Public group As TGroup 'группа

Для обращения к элементам пользовательского типа (полям структуры) используется точечная нотация:

<имяПеременнойUDT>.<имяЭлемента>

Листинг22. Работа с переменными пользовательского типа

Sub sample20() ReDim group.Students(10) group.Num = "АС-123" group.Students(0).LastName = "Петров" group.Students(0).FirstName = "Иван" Debug.Print group.Num & group.Students(0).LastName & " " & group.Students(0).FirstName End Sub

Широкие возможности, представляемые программисту пользовательским типом имеют ограничение: все операции должны выполняться на уровне полей. Единственная разрешенная операция — присваивание (листинг 23).

Листинг 23. Операции над пользовательским типом

Sub sample21() Dim group1 As TGroup, group2 As TGroup ReDim group1.Students(25) ReDim group2.Students(28) group1.Num = "AS-123" group2.Num = "AS-456" Debug.Print "1: "; group1.Num, group2.Num ' If group2 > group1 Then... - Это вызовет ошибку If UBound(group2.Students) > UBound(group1.Students) Then ' Так можно group1 = group2 ' Так тоже можно EndIf Debug.Print "2: "; group1.Num, group2.Num End Sub



Поделиться с друзьями:


Дата добавления: 2013-12-13; Просмотров: 261; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.023 сек.