Variant Typ proměnné
Proměnná varianty může obsahovat libovolný čas dat (řetězec, celá čísla, desetinná místa, objekty atd.). Pokud nedeklarujete typ proměnné, bude vaše proměnná považována za variantu.
Chcete -li deklarovat proměnnou Variant, použijte příkaz Dim (zkratka pro Dimension):
1 | Dim varName as Variant |
1 | Dim rng jako Variant |
Potom k přiřazení hodnoty proměnné jednoduše použijte znaménko rovnosti:
1 | varName = "John" |
1 | rng = Listy (1). Rozsah ("A1") |
Uvedení do postupu vypadá takto:
12345678910 | Sub strExample ()“deklarujte variantyDim strName As VariantDim rng As Variant“naplňte proměnnéstrName = "Fred Smith"Nastavit rng = Listy (1). Rozsah ("A1")“naplňte listrng.Value = strNameEnd Sub |
Pokud spustíte výše uvedený kód, buňka A1 v listu 1 bude naplněna „Fred Smith“
Podle výše uvedených jmen bychom mohli usoudit, že varName bude obsahovat text a objSheet bude obsahovat objekt listu. Ve skutečnosti však do proměnné lze směrovat jakýkoli typ dat.
Proměnné deklarované výše můžete naplnit následovně a nedojde k žádné chybě.
1 | varName = 6 |
1 | objSheet - "Fred" |
Je neobvyklé používat variantní proměnné a není to považováno za správnou praxi. V některých případech jsou však proměnné variant užitečné.
Deklarujte proměnnou varianty na úrovni modulu nebo na globální úrovni
V předchozím příkladu jste deklarovali proměnnou Variant v rámci procedury. Proměnné deklarované pomocí procedury lze použít pouze v rámci této procedury.
Místo toho můžete deklarovat proměnné varianty na modulu nebo na globální úrovni.
Úroveň modulu
Úroveň modulu proměnné jsou deklarovány v horní části modulů kódu pomocí Ztlumit tvrzení.
Tyto proměnné lze použít s jakoukoli procedurou v tomto modulu kódu.
Globální úroveň
Globální úroveň proměnné jsou také deklarovány v horní části modulů kódu. Místo použití Ztlumit prohlášení, používáte Veřejnost prohlášení, které označuje, že proměnná řetězce je k dispozici pro použití v celém vašem projektu VBA.
1 | Veřejný strName jako varianta |
Pokud byste deklarovali proměnnou varianty na úrovni modulu a použili ji v jiném modulu, došlo by k chybě.
Pokud byste k deklaraci variantní proměnné použili klíčové slovo Public, k chybě by nedošlo a postup by běžel perfektně.
Naplnění Excelu pomocí varianty
Zvažte následující postup:
12345678910111213141516171819 | Dílčí testovací proměnná'deklarujte řetězec, který bude obsahovat název produktu.'Dim strProduct jako řetězec'deklarujte celé číslo, které udrží množství produktu.'Dim iQty jako celé číslo„deklarovat dvojníky, aby udržely cenu produktu a celkovou cenuDim dblCena jako dvojnásobekDim dblCelkem jako Double“naplňte proměnnéstrProduct = "Víceúčelová mouka"iQty = 3dblPrice = "5,00 USD"dblTotal = "15,00 USD"“vyplňte list aplikace ExcelRozsah ("A1") = strProductRozsah ("A2") = iQtyRozsah ("A3") = dblCenaRozsah ("A4") = dblCelkemEnd Sub |
Když spustíme tento kód, dojde k následující chybě.
Klikněte na Ladit
Do proměnné nemůžete vložit znak dolaru, protože proměnná je deklarována jako a Dvojnásobek, a proto nemůže ukládat řetězcové hodnoty.
Prohlásit dblCena a dblCelkem jako varianty, což znamená, že nejste omezeni na datový typ.
1 | Dim dblCena jako varianta |
1 | Dim dblCelkem jako varianta |
Znovu spusťte kód a data se zobrazí v listu aplikace Excel tak, jak by měla.
Všimněte si toho, že data zadaná ve formátu A4 a A5 jsou automaticky převedena do Excelu na čísla.
Deklarace dynamického pole
Proměnné variant jsou také užitečné, když deklarujete dynamické pole, protože umožňují změnu velikosti pole během běhu.
SVariantní pole, nemusíte definovat velikost pole. Velikost se automaticky upraví.
123456789 | Sub VariantArray ()Dim arrList () jako varianta"Definujte hodnoty."arrList = pole (1, 2, 3, 4)'Změnit hodnotyarrList = Array (1,2,3,4,5,6)'Výstupní poloha 4MsgBox arrVar (4)End Sub |