
4.5. Тип данных Object
В VBA переменные, предоставляющие доступ к объектам, являются только ссылками на эти объекты. В этом языке программирования невозможно получить сам объект (его двоичный код). Все операции по созданию, использованию и удалению объектов осуществляются только с использованием ссылок.
Объекты, доступные из VBA, существуют, пока на них установлена хотя бы одна ссылка. Первая ссылка на объект устанавливается при его создании. В процессе работы можно как устанавливать новые ссылки на объект, так и удалять их с использованием специальной инструкции Set. Пусть objRef ссылка на некоторый объект. Тогда операция установления новой ссылки будет иметь такой вид:
Set objNewRef = objRef
Теперь objNewRef ссылается на тот же объект, что и objRef. Для доступа к объектам в VBA предусмотрен тип данных Object. Он является универсальным, так как может быть ссылкой на объект любого типа. Данный тип предназначен для хранения адресов памяти. По этим адресам могут храниться стандартные объекты из приложений Microsoft Office или созданные пользователем. Тип данных Object класс объектов, которые могут принимать значения из множества всевозможных адресов памяти машины. Для переменных типа Object существует специальное значение Nothing. Оно указывает, что переменная типа Object содержит адрес, по которому не существует конкретного объекта.
4.6. Тип данных Variant
Тип данных Variant множество объектов, которые могут принимать значения из любых выше перечисленных типов данных. Данные типа Variant принимают свойства типа в соответствии с типом той информации, которая в них заносится. Так, если ввести строку, то данные будут обладать свойствами типа String, если ввести целое число, то данные будут обладать свойствами типа Integer. Таким образом, операции для данных типа Variant возможны все те, которые определены для типа той информации, которая в данный момент занесена в них.
4.7. Перечислимый тип данных
Этот тип данных создает сам пользователь, когда ему не хватает стандартных типов данных. Он создается с помощью ключевого слова Enum.
Перечислимый тип данных класс объектов, которые могут принимать значения из некоторого упорядоченного множества. Этот тип данных имеет следующий синтаксис:
[PrivatePublic] Enum nameType
I1 [ = L1 ]
I2 [ = L2 ]
………...
Ik [ = Lk ]
End Enum
где:
• nameType имя типа, задаваемое пользователем;
• I1, I2,…., Ik идентификаторы, определяющие имена для элементов, которые принадлежат данному перечислимому типу;
• L1, L2,…., Lk значения типа Long (целые числа), задающее значение для соответствующего элемента. По умолчанию первый элемент (I1) будет иметь значение 0, а каждый последующий на единицу больше;
• Private, Public, Enum, End Enum ключевые слова.
Enum и End Enum являются обязательными в данной конструкции и обозначают соответственно начало и конец описания перечислимого типа.
Приведем пример на перечислимый тип, а именно дни недели.
Option Explicit Опция редактора, требующая, чтобы все переменные были описаны
Private Enum Week
Sunday I1
Monday I2
Tuesday I3
Wednesday I4
Fryday I5
Saturday I6
End Enum
Sub TypeEnum ()
Dim weekDay As Week переменная weekDay объявлена как пеweekDay = Fryday переменная перечислимого типа Week
MsgBox weekDay
End Sub
В результате работы этой программы в окне сообщения будет выведено число 4, так как первый элемент Sunday имеет значение 0.