Вариант Тип переменной
Переменная 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)Конец подписки |