Тип Variant
Тип Variant обеспечивает «безразмерный» контейнер для хранения данных. Переменная этого типа может хранить данные любого из допустимых в VBA типов, включая числовые значения, строки, даты и объекты. Более того, одна и та же такая переменная в одной и той же программе в разные моменты может хранить данные различных типов. Например, следующий фрагмент программного кода вполне допустим (хотя вряд ли продуктивен):
Dim varЧтоУгодно As Variant
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 data type
The Variant data type is the data type for all variables that are not explicitly declared as some other type (using statements such as Dim, Private, Public, or Static).
The Variant data type has no type-declaration character.
A Variant is a special data type that can contain any kind of data except fixed-length String data. (Variant types now support user-defined types.) A Variant can also contain the special values Empty, Error, Nothing, and Null. You can determine how the data in a Variant is treated by using the VarType function or TypeName function.
Use the VarType function to test what type of data is held in a Variant.
Generally, numeric Variant data is maintained in its original data type within the Variant. For example, if you assign an Integer to a Variant, subsequent operations treat the Variant as an Integer. However, if an arithmetic operation is performed on a Variant containing a Byte, an Integer, a Long, or a Single, and the result exceeds the normal range for the original data type, the result is promoted within the Variant to the next larger data type. A Byte is promoted to an Integer, an Integer is promoted to a Long, and a Long and a Single are promoted to a Double.
An error occurs when Variant variables containing Currency, Decimal, and Double values exceed their respective ranges.
You can use the Variant data type in place of any data type to work with data in a more flexible way. If the contents of a Variant variable are digits, they may be either the string representation of the digits or their actual value, depending on the context. For example:
The value Empty denotes a Variant variable that hasn’t been initialized (assigned an initial value). A Variant containing Empty is 0 if it is used in a numeric context, and a zero-length string («») if it is used in a string context.
Don’t confuse Empty with Null. Null indicates that the Variant variable intentionally contains no valid data.
In a Variant, Error is a special value used to indicate that an error condition has occurred in a procedure. However, unlike for other kinds of errors, normal application-level error handling does not occur. This allows you, or the application itself, to take some alternative action based on the error value. Error values are created by converting real numbers to error values by using the CVErr function.
See also
Support and feedback
Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.
Understanding Variants
Тип данных Variant автоматически указывается, если при объявлении константы, переменной или аргумента тип данных не указывается.
Переменные, объявленные как тип данных Variant, могут содержать строки, дату, время, значения boolean или числимые, а также автоматически преобразовывать значения, которые они содержат. Значения Числовый вариант требуют 16 bytes памяти (что имеет важное значение только в больших процедурах или сложных модулях), и они медленнее для доступа, чем явно введите переменные любого другого типа. Вы редко используете тип данных Variant для константы. Строковые значения типа Variant требуют 22 байта памяти.
Следующие операторы создают переменные Variant:
Последнее утверждение явно не объявляет переменную, а объявляет переменную неявно или автоматически. Объявленные неявно переменные указываются с типом данных Variant.
Если вы указываете тип данных для переменной или аргумента, а затем используете неправильный тип данных, возникнет ошибка типа данных. Чтобы избежать таких ошибок, используйте только неявные переменные (с типом данных Variant) или явно объявите все переменные и укажите для них тип данных. Последний вариант более предпочтителен.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Типы данных VBA
Тип Date
VBA использует тип Date для хранения дат и времени.
Можно вычитать одну дату из другой, добавлять к дате или вычитать числа для изменения ее значения. В VBA имеется несколько встроенных процедур для отдельного извлечения года, месяца, дня, часов, минут и секунд переменной типа Date.
Числа
VBA имеет шесть различных численных типов данных: Byte, Integer, Long, Single, Double, Currency.
Они используются для хранения чисел в различных форматах, в зависимости от конкретного типа.
Целые числа
VBA предоставляет три типа целых данных: Byte, Integer, Long.
Byte, Integer, Long типы требуют меньше памяти для хранения чисел, чем другие численные типы данных VBA, а математические операции и операции сравнения над числами указанных типов быстрее, чем эти же операции для численных типов данных с плавающей точкой.
VBA автоматически преобразует данные типов Byte, Integer, Long в текст, когда они выводятся на экран, используя такие процедуры, как MsgBox.
Числа с плавающей точкой
Числа с плавающей точкой могут иметь любое число цифр до или после десятичной точки (в пределах границ конкретного типа данных). Иногда их называют действительными числами. Этот тип данных используют тогда, когда требуется хранить числа, имеющие дробную часть.
VBA имеет два типа данных с плавающей точкой: Single, Double.
Следует иметь ввиду, что операции, выполняемые над числами с плавающей точкой, немного медленнее подобных операций над другими численными типами данных. Кроме того, числа, хранимые как типы данных с плавающей точкой, могут быть подвержены ошибкам округления. Если число с плавающей точкой очень большое или очень малое, VBA отображает его в экспоненциальном представлении.
Тип данных Currency
Текстовые строки
Любые текстовые данные, сохраняемые в VBA, называются строками. Для их хранения предназначен тип данных String.
Строка может содержать текстовые символы любых типов: буквы, цифры, знаки пунктуации, разделительные символы и пр.
Строки всегда заключаются в двойные кавычки.
Существует две категории строк: строки переменной длины и строки фиксированной длины. По умолчанию в VBA все строки переменной длины.
Логические значения
Булевские значения получают как результат операции сравнения. Операции сравнения имеет место при сравнении одного с другим, например, при сравнении двух чисел для определения, которое из них больше.
Тип данных Variant
Это особый тип данных, который может сохранять любые типы, за исключением типа Object. VBA использует этот тип данных для всех переменных, если только они не объявлены явно.
Данные типа Variant принимают характеристики определенного типа, который они сохраняют в данный момент. Например, если данные типа Variant содержат строковые данные, Variant принимает характеристики типа String. VBA использует для данных типа Variant наиболее компактное представление, возможное для конкретных значений, находящихся в данных.
Несмотря на то, что типы Variant удобны и избавляют от некоторой части работы при написании кода, они требуют большего объема памяти, чем любой другой тип данных, за исключением больших строк. Кроме того, математические операции и операции сравнения над данными типа Variant выполняются медленнее, чем подобные операции над данными любого другого типа. Следует избегать использования переменных Variant.
Подведем итог вышесказанному:
Тип данных
Описание и диапазон значения
Хранение положительных чисел от 0 до 255
Хранение логических значений: True, False
Хранение даты и времени.
Даты от 1.01.100 до 31.12.9999
Время от 00:00:00 до 23:59:59
Хранение текста длиной до 2 млрд. символов
Хранение любого типа данных
VBA Variant
Типы данных Excel VBA Variant
В VBA у нас есть разные типы типов данных Variable. Мы используем их, когда нам нужно указать какой-то определенный вид ввода данных. Предположим, что для целого числа мы используем Integer, для текста мы используем String и для длинного набора данных мы используем тип данных Long. И есть еще несколько типов данных, которые мы используем различные типы объявления переменных. Но что, если я скажу вам, что мы можем определить все эти переменные в одном типе данных. Для этого у нас есть VBA Variant, в котором мы можем определить любой тип переменной, который мы хотим.
VBA Variant так же прост, как и использование других типов данных. Для определения любого типа переменной используйте любое имя или алфавит, чтобы назвать его, а затем мы выбираем тип данных, который мы хотим. Давайте посмотрим пример, где мы увидим, как переменная может быть объявлена с использованием типа данных Integer.
И вариант можно использовать, как показано ниже.
Как объявить тип данных Variant в Excel VBA?
Мы суммируем весь процесс объявления переменных в VBA с использованием VBA Variant. Давайте посмотрим на пример, где мы будем использовать традиционные типы данных для объявления переменных в первую очередь.
Шаги по объявлению варианта данных
Выполните следующие шаги, чтобы объявить тип данных Variant в Excel с помощью кода VBA.
Шаг 1: Перейдите в окно VBA, на вкладке меню « Вставка » выберите « Модуль», как показано ниже.
Шаг 2: Теперь напишите подпроцедуру для VBA Variant под любым именем. Мы использовали имя, которое может определить процесс, который использует.
Шаг 3: Теперь определите переменную, в которой мы можем хранить или печатать любой текст или имя. Для этого нам нужно использовать строковый тип данных.
Шаг 4: Теперь определите другую переменную, где мы можем хранить или печатать любые данные. Для этого мы снова будем использовать тип данных String.
Шаг 5: Теперь определите другую переменную, где мы можем хранить некоторые числа. Для этого мы будем использовать целочисленный тип данных.
Шаг 6: И наконец, мы объявим еще одну переменную, в которой мы будем хранить длинное число, используя тип данных Long
Итак, в основном здесь, мы будем создавать базу данных, которая будет иметь имя ученика, дату рождения, возраст и номер броска. Теперь, чтобы завершить этот процесс, мы назначим значения каждой из переменных, которые мы определили выше,
Шаг 7: Таким образом, мы объявим имя студента как Ашвани, чья дата рождения 02 сентября 1990 года и возраст 29 лет и номер броска 16238627 в его сертификационном экзамене, как показано ниже.
Шаг 8: Используйте функцию Debug.Print и запишите все переменные, которые мы определили выше, через запятую, как показано ниже.
Шаг 9: Чтобы увидеть результат, откройте Immediate Window из списка меню View. Или мы можем использовать горячую клавишу Ctrl + G, чтобы получить это окно.
Шаг 10: Запустите код, нажав функциональную клавишу F5 или нажмите кнопку Play, расположенную под списком меню.
Мы увидим, что все переменные, которые мы объявили выше, мы можем видеть значения, хранящиеся в каждой из переменных.
Шаг 11: Теперь мы заменим каждую переменную String, Integer и Long типом данных Variant, как показано ниже.
И если мы сравним выход, то оба выхода одинаковы.














