Тип Variant

Тип Variant

Тип Variant обеспечивает "безразмерный" контейнер для хранения данных. Переменная этого типа может хранить данные любого из допустимых в VBA типов, включая числовые значения, строки, даты и объекты. Более того, одна и та же такая переменная в одной и той же программе в разные моменты может хранить данные различных типов. Например, следующий фрагмент программного кода вполне допустим (хотя вряд ли продуктивен):

Dim varЧтоУгодно As Variant

varЧтоУгодно = 3

varЧтоУгодно = "Я полагаю."

varЧтоУгодно =#12/31/99 11:59:59 РМ#

VBA не только допускает такой набор операторов, но еще и помнит, данные какого типа вы помещаете в переменную типа Variant. Например, после выполнения последнего из приведенных выше операторов varЧтоУгодно будет идентифицироваться как переменная типа Variant/Date. Выяснить, данные какого типа хранятся в переменной типа Variant в данный момент, можно с помощью функции VBA TypeName. Например, если бы предыдущий фрагмент программного кода продолжался оператором

strVariantType = TypeName (varЧтоУгодно)

то значением переменной strVariantType было бы Date, поскольку данные именно такого типа находятся в varЧтоУгодно.

Благодаря такой своей гибкости переменные типа Variant очень удобны. Вместо того чтобы заботиться об использовании конкретных типов данных, можно всем переменным назначить тип Variant, и тогда в них легко помешать данные любых типов. Однако такой подход тоже имеет свои недостатки, о которых уже говорилось в разделе "Использование конкретного типа данных по сравнению с типом Variant: за и против".

Но даже если вы назначите конкретные типы данных всем своим переменным, переменные типа Variant не утратят своей роли хотя бы как черновые переменные для простых вычислений в небольших процедурах. А в VBA 5 и VBA 6 такие переменные придется использовать, если вам потребуется максимально допустимая в VBA точность вычислений (подробности - в следующем разделе).