Тип данни на VBA вариант (Dim Variable)

Вариант Променлив Тип

Вариантната променлива може да съдържа данни по всяко време (низ, цели числа, десетични знаци, обекти и т.н.). Ако не декларирате тип променлива, вашата променлива ще се счита за вариант.

За да декларирате променлива Variant, използвате Dim Statement (съкращение от Dimension):

1 Dim varName като Variant
1 Затъмнете като вариант

След това, за да присвоите стойност на променлива, просто използвайте знака за равенство:

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

Поставянето на това в процедура изглежда така:

12345678910 Sub strExample ()'декларирайте вариантитеDim strName As VariantDim rng като вариант'попълнете променливитеstrName = "Фред Смит"Задайте rng = Листове (1). Диапазон ("A1")'попълнете листаrng.Value = strNameEnd Sub

Ако стартирате кода по -горе, клетка A1 в лист 1 ще бъде попълнена с „Fred Smith“

С декларираните по -горе имена можем да заключим, че varName ще съдържа текст, а objSheet ще съдържа обект на работен лист. Но всъщност всеки тип данни може да бъде насочен към променливата.

Можете да попълните променливите, декларирани по -горе, както следва, и няма да възникне грешка.

1 varName = 6
1 objSheet - "Фред"

Необичайно е използването на променливи и не се счита за добра практика. В някои случаи обаче променливите на Variant са полезни.

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

В предишния пример декларирахте променливата Variant в рамките на процедура. Променливите, декларирани с процедура, могат да се използват само в рамките на тази процедура.

Вместо това можете да декларирате Variant променливи на модулно или глобално ниво.

Модулно ниво

Ниво на модул променливите се декларират в горната част на кодовите модули с Дим изявление.

Тези променливи могат да се използват с всяка процедура в този кодов модул.

Глобално ниво

Глобално ниво променливите също са декларирани в горната част на кодовите модули. Въпреки това, вместо да използвате Дим изявление, използвате Обществен изявление, което показва, че променливата на низ е достъпна за използване във вашия VBA проект.

1 Публично strName като вариант

Ако декларирате променливата вариант на ниво модул и използвате в друг модул, ще възникне грешка.

Ако бяхте използвали ключовата дума Public за деклариране на променливата на варианта, грешката нямаше да възникне и процедурата щеше да работи перфектно.

Използване на вариант за попълване на Excel

Помислете за следната процедура:

12345678910111213141516171819 Sub TestVariable'декларирайте низ, който да съдържа името на продуктаЗатъмнете strProduct като низ„декларирайте цяло число, което да съдържа количеството на продуктаЗатъмнете iQty като цяло число„декларират двойни, които да държат цената на продукта и общата ценаDim dblЦена като DoubleDim dblTotal като Double'попълнете променливитеstrProduct = "Универсално брашно"iQty = 3dblPrice = "$ 5.00"dblTotal = "$ 15.00"'попълнете листа на ExcelДиапазон ("A1") = strProductДиапазон ("A2") = iQtyДиапазон ("A3") = dblPriceОбхват ("A4") = dbl ОбщоEnd Sub

Когато стартираме този код, възниква следната грешка.

Щракнете върху Отстраняване на грешки

Не можете да поставите знак за долар в променливата, тъй като променливата е декларирана като a Двойна, и следователно не може да съхранява низови стойности.

Декларирайте dblЦена и dbl Общо като варианти, което означава, че не сте ограничени до тип данни.

1 Dim dblЦена като вариант
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)End Sub

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave