Тип данных VBA Variant (тусклая переменная)

Вариант Тип переменной

Переменная Variant может содержать данные в любое время (строку, целые числа, десятичные дроби, объекты и т. Д.). Если вы не объявите тип переменной, ваша переменная будет считаться вариантом.

Чтобы объявить переменную Variant, вы используете оператор Dim (сокращение от Dimension):

1 Dim varName as Variant
1 Dim rng as Variant

Затем, чтобы присвоить значение переменной, просто используйте знак равенства:

1 varName = "Джон"
1 rng = Листы (1). Диапазон ("A1")

Ввод этого в процедуру выглядит так:

12345678910 Sub strExample ()'объявить вариантыDim strName как вариантDim rng As Variant'заполнить переменныеstrName = "Фред Смит"Установить rng = Sheets (1) .Range ("A1")'заполнить листrng.Value = strNameКонец подписки

Если вы запустите приведенный выше код, ячейка A1 на листе 1 будет заполнена «Фред Смит».

По заявленным выше именам можно сделать вывод, что varName будет содержать текст, а objSheet будет содержать объект рабочего листа. Но на самом деле в переменную можно направить любой тип данных.

Вы можете заполнить переменные, объявленные выше, следующим образом, и никаких ошибок не произойдет.

1 varName = 6
1 objSheet - «Фред»

Использование вариантных переменных необычно и не считается хорошей практикой. Однако в некоторых случаях полезны переменные Variant.

Объявить переменную Variant на модульном или глобальном уровне

В предыдущем примере вы объявили переменную Variant внутри процедуры. Переменные, объявленные с помощью процедуры, могут использоваться только внутри этой процедуры.

Вместо этого вы можете объявить переменные Variant на уровне модуля или на глобальном уровне.

Уровень модуля

Уровень модуля переменные объявляются в верхней части модулей кода с Тусклый утверждение.

Эти переменные можно использовать с любой процедурой в этом модуле кода.

Глобальный уровень

Глобальный уровень переменные также объявляются в верхней части модулей кода. Однако вместо использования Тусклый заявление, вы используете Общественные , чтобы указать, что строковая переменная доступна для использования в вашем проекте VBA.

1 Public strName как вариант

Если вы объявили переменную варианта на уровне модуля и использовали ее в другом модуле, возникла бы ошибка.

Если бы вы использовали ключевое слово Public для объявления вариантной переменной, ошибки не возникло бы, и процедура прошла бы безупречно.

Использование варианта для заполнения Excel

Рассмотрим следующую процедуру:

12345678910111213141516171819 Sub TestVariable'объявить строку, содержащую название продуктаDim strProduct как строка'объявить целое число для хранения количества продуктаDim iQty как целое число'объявить двойные, чтобы удерживать цену продукта и общую ценуDim dblPrice as DoubleDim dblTotal as Double'заполнить переменныеstrProduct = "Универсальная мука"iQty = 3dblPrice = "5 долларов США"dblTotal = "15,00 долларов США"'заполнить лист ExcelДиапазон ("A1") = strProductДиапазон ("A2") = iQtyДиапазон ("A3") = dblPriceДиапазон ("A4") = dblTotalКонец подписки

Когда мы запускаем этот код, возникает следующая ошибка.

Нажмите "Отладка".

Вы не можете поместить знак доллара в переменную, поскольку переменная объявлена ​​как Двойной, и поэтому не может хранить строковые значения.

Объявить dblPrice а также dblTotal как Варианты, что означает, что вы не ограничены типом данных.

1 Dim dblPrice как вариант
1 Dim dblTotal как вариант

Повторно запустите код, и данные появятся в таблице Excel должным образом.

Обратите внимание, что данные, введенные в форматах A4 и A5, затем автоматически преобразуются Excel в числа.

Объявление динамического массива

Вариантные переменные также полезны при объявлении динамического массива, поскольку они позволяют изменять размер массива во время выполнения.

СВариант Массив, вам не нужно определять размер массива. Размер изменится автоматически.

123456789 Sub VariantArray ()Dim arrList () как вариант'Определить ценностиarrList = Массив (1, 2, 3, 4)'Менять значенияarrList = Массив (1,2,3,4,5,6)'Выходное положение 4MsgBox arrVar (4)Конец подписки

Вы поможете развитию сайта, поделившись страницей с друзьями

wave wave wave wave wave