VBA -variantdatatyp (dim variabel)

Variant Variabel Typ

En variantvariabel kan hålla data när som helst (sträng, heltal, decimaler, objekt, etc.). Om du inte deklarerar en variabeltyp kommer din variabel att betraktas som variant.

För att deklarera en variantvariabel använder du Dim Statement (förkortning för Dimension):

1 Dim varName som variant
1 Dim rng som variant

För att sedan tilldela ett värde till en variabel, använd helt enkelt likhetstecknet:

1 varName = "John"
1 rng = Sheets (1) .Range ("A1")

Att sätta in detta i ett förfarande ser ut så här:

12345678910 Sub strExample ()'deklarera varianternaDim strName Som variantDim rng Som variant'fylla i variablernastrName = "Fred Smith"Ställ in rng = Sheets (1) .Range ("A1")'fylla i arketrng.Value = strNameAvsluta Sub

Om du kör koden ovan fylls cell A1 i blad 1 med "Fred Smith"

Med namnen som deklareras ovan kan vi dra slutsatsen att varName skulle innehålla text och objSheet skulle innehålla ett kalkylbladsobjekt. Men egentligen kan vilken typ av data som helst riktas till variabeln.

Du kan fylla i variablerna som deklareras ovan enligt följande och inget fel skulle uppstå.

1 varName = 6
1 objSheet - "Fred"

Det är ovanligt att använda variantvariabler och anses inte vara god praxis. Ibland är dock Variantvariabler användbara.

Deklarera variantvariabel på modul eller global nivå

I det föregående exemplet deklarerade du variabelvarianten inom ett förfarande. Variabler som deklareras med ett förfarande kan endast användas inom det förfarandet.

Istället kan du deklarera Variantvariabler på modul- eller global nivå.

Modulenivå

Modulenivå variabler deklareras högst upp i kodmodulerna med Dämpa påstående.

Dessa variabler kan användas med alla procedurer i den kodmodulen.

Global nivå

Global nivå variabler deklareras också högst upp i kodmodulerna. Men istället för att använda Dämpa uttalande använder du offentlig uttalande för att indikera att strängvariabeln är tillgänglig för användning i hela ditt VBA -projekt.

1 Public strName som variant

Om du deklarerade variantvariabeln på modulnivå och använde i en annan modul skulle ett fel uppstå.

Om du hade använt det offentliga nyckelordet för att deklarera variantvariabeln skulle felet inte uppstå och proceduren skulle fungera perfekt.

Använda en variant för att fylla i Excel

Tänk på följande procedur:

12345678910111213141516171819 Deltest Varierande'deklarera en sträng för att hålla produktnamnetDim str Produkt som sträng'deklarera ett heltal för att hålla produktkvantitetenDim iQty som heltal'förklarar dubbelt för att hålla produktpriset och det totala prisetDim dblPris som dubbelDim dblTotalt som dubbel'fylla i variablernastrProduct = "All Purpose Mjöl"iQty = 3dblPrice = "$ 5,00"dblTotal = "$ 15,00"'fylla i Excel -arketOmråde ("A1") = strProductOmråde ("A2") = iQtyOmråde ("A3") = dblPrisOmråde ("A4") = dblTotalAvsluta Sub

När vi kör den här koden uppstår följande fel.

Klicka på Debug

Du kan inte sätta ett dollarstecken i variabeln eftersom variabeln deklareras som a Dubbeloch kan därför inte lagra strängvärden.

Deklarera dblPris och dblTotalt som varianter vilket innebär att du inte är begränsad till en datatyp.

1 Dim dblPris som variant
1 Dim dblTotalt som variant

Kör koden igen så visas uppgifterna i Excel-arket som de ska.

Observera att data som matas in i A4 och A5 automatiskt sedan konverteras av Excel till siffror.

Deklarera en dynamisk matris

Variantvariabler är också användbara när du deklarerar en dynamisk matris eftersom de gör att matrisens storlek kan ändras under körning.

Med enVariant Array, du behöver inte definiera matrisstorleken. Storleken justeras automatiskt.

123456789 Sub VariantArray ()Dim arrList () Som variant'Definiera värdenarrList = Array (1, 2, 3, 4)'Ändra värdenarrList = Array (1,2,3,4,5,6)'Utgångsläge 4MsgBox arrVar (4)Avsluta Sub

Du kommer att bidra till utvecklingen av webbplatsen, dela sidan med dina vänner

wave wave wave wave wave