Datový typ varianty VBA (proměnná dimenze)

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
wave wave wave wave wave