Microsoft Office (Разработка документов в Word, Excel и приложений на Visual Basic for Application). - Учебное пособие (Н.А.Устинов)

Тип данных variant

Тип данных Variant является типом, к которому относятся все переменные, не описанные явно с другим типом данных (с помощью инструкций Dim, Private, Public или Static).  Для типа Variant не определен символ описания типа.

Variant является особым типом данных.  Переменные этого типа могут содержать любые данные, за исключением строк (тип String) фиксированной длины и определяемых пользователем типов.  Переменная типа Variant может также содержать специальные значения Empty, Error, Nothing и Null.  Указать характер подтипов типа Variant позволяют функции VarType или TypeName.

Допустимыми числовыми данными являются любые целые или действительные числа в диапазоне от -1,797693134862315E308 до -4,94066E-324 для отрицательных значений и от 4,94066E-324 до 1,797693134862315E308 для положительных значений.  В общем случае, числовые данные типа Variant сохраняют свой исходный тип данных внутри типа Variant.  Например, если присвоить переменной типа Variant значение типа Integer, то в последующих операциях Variant трактуется как Integer.  Однако, если арифметическая операция, выполненная над переменной типа Variant, содержащей значение типа Byte, Integer, Long или Single, приводит к тому, что результат выходит за границы диапазона допустимых значений исходного типа, то результат преобразуется к следующему более широкому типу внутри типа Variant.  Значение типа Byte преобразуется к типу Integer, Integer преобразуется к типу Long, а значения типа Long и Single преобразуются к типу Double.  Ошибка возникает, если за пределы допустимого диапазона значений выходят переменные типа Variant, содержащие значения типа Currency, Decimal или Double.

Пользователь имеет возможность использовать тип Variant вместо любого типа данных, чтобы обеспечить большую гибкость при обработке данных.  Если содержимым переменной типа Variant являются цифры, то в разном контексте они могут рассматриваться либо как строковое представление числа, либо как число.  Например:

Dim MyVar As Variant

MyVar = 98052

В этом примере переменная MyVar содержит представление числового значения 98052.  Арифметические операторы можно применять к значениям типа Variant, содержащим как числа, так и строковые значения, которые могут быть интерпретированы как числа.  Если применить оператор + для сложения переменной MyVar с другой переменной типа Variant, содержащей число, или с переменной числового типа, то результатом будет арифметическая сумма.

Значение Empty определяет переменную типа Variant, которая не была инициализирована (не получила начальное значение).  Переменная типа Variant, содержащая значение Empty, рассматривается как 0 в контексте математических операций и как пустая строка ("") в контексте операций со строковыми значениями.

Не следует путать значения Empty и Null. Null указывает, что переменная типа Variant имеет пустое значение в результате конкретных операций.

Для типа Variant значение Error является специальным значением, которое используется для указания возникновения условия ошибки в  процедуре.  Однако в отличие от других типов ошибок при этом не происходит нормальной обработки ошибок на уровне приложения.  Это позволяет пользователю или приложению выбрать несколько альтернативных действий на основании значения ошибки.  Значения Error создаются путем преобразования действительных чисел в значения ошибки с помощью функции CVErr.