Variant Variabel Type
En variantvariabel kan indeholde enhver tid med data (streng, heltal, decimaler, objekter osv.). Hvis du ikke erklærer en variabeltype, betragtes din variabel som variant.
For at deklarere en variantvariabel bruger du Dim Statement (forkortelse for Dimension):
1 | Dim varName som variant |
1 | Dim rng som variant |
For derefter at tildele en værdi til en variabel skal du blot bruge lighedstegnet:
1 | varName = "John" |
1 | rng = Ark (1) .Range ("A1") |
At sætte dette i en procedure ser sådan ud:
12345678910 | Sub strExample ()'erklærer varianterneDim strName Som variantDim rng Som variant'udfyld variablernestrName = "Fred Smith"Indstil rng = Sheets (1) .Range ("A1")'udfyld arketrng.Value = strNameAfslut Sub |
Hvis du kører koden ovenfor, udfyldes celle A1 i ark 1 med "Fred Smith"
Ved de navne, der er erklæret ovenfor, kunne vi konkludere, at varName ville indeholde tekst, og objSheet ville indeholde et regnearkobjekt. Men faktisk kan enhver form for data dirigeres til variablen.
Du kan udfylde de ovenfor angivne variabler, og der ville ikke opstå fejl.
1 | varName = 6 |
1 | objSheet - "Fred" |
Det er usædvanligt at bruge variantvariabler og betragtes ikke som god praksis. Nogle gange er variantvariabler imidlertid nyttige.
Deklarér variantvariabel på modul eller globalt niveau
I det foregående eksempel erklærede du varianten Variant inden for en procedure. Variabler, der er angivet med en procedure, kan kun bruges inden for denne procedure.
I stedet kan du deklarere variantvariabler på modulet eller globalt niveau.
Modulniveau
Modulniveau variabler erklæres øverst i kodemodulerne med Svag udmelding.
Disse variabler kan bruges med enhver procedure i det pågældende kodemodul.
Globalt niveau
Globalt niveau variabler deklareres også øverst i kodemodulerne. Men i stedet for at bruge Svag erklæring, bruger du Offentlig erklæring for at angive, at strengvariablen er tilgængelig til brug i hele dit VBA -projekt.
1 | Offentlig strName som variant |
Hvis du erklærede variantvariablen på et modulniveau og bruges i et andet modul, ville der opstå en fejl.
Hvis du havde brugt det offentlige søgeord til at erklære variabelvariablen, ville fejlen ikke opstå, og proceduren ville køre perfekt.
Brug af en variant til at udfylde Excel
Overvej følgende procedure:
12345678910111213141516171819 | Subtest Variabel'erklære en streng for at holde produktnavnetDim str Produkt som streng'erklære et helt tal for at holde produktmængdenDim iQty som heltal'erklærer dobbelt for at holde produktprisen og den samlede prisDim dblPris som dobbeltDim dblTotalt som dobbelt'udfyld variablernestrProduct = "Mel til alle formål"iQty = 3dblPrice = "$ 5,00"dblTotal = "$ 15,00"'udfyld Excel -arketOmråde ("A1") = strProductOmråde ("A2") = iQtyOmråde ("A3") = dblPrisOmråde ("A4") = dblTotalAfslut Sub |
Når vi kører denne kode, opstår følgende fejl.
Klik på Debug
Du kan ikke sætte et dollartegn i variablen, da variablen er erklæret som en Dobbelt, og kan derfor ikke gemme strengværdier.
Erklære dblPris og dblTotalt som varianter, hvilket betyder, at du ikke er begrænset til en datatype.
1 | Dim dblPris som variant |
1 | Dim dblTotal som variant |
Kør koden igen, og dataene vises i Excel-arket, som det skal.
Bemærk, at de data, der er indtastet i A4 og A5, automatisk konverteres derefter af Excel til tal.
Erklæring om et dynamisk array
Variantvariabler er også nyttige, når du erklærer et dynamisk array, da de tillader matrixens størrelse at ændre sig i løbetid.
Med enVariant Array, behøver du ikke at definere matrixstørrelsen. Størrelsen justeres automatisk.
123456789 | Sub VariantArray ()Dim arrList () Som variant'Definer værdierarrList = Array (1, 2, 3, 4)'Ændre værdierarrList = Array (1,2,3,4,5,6)'Outputposition 4MsgBox arrVar (4)Afslut Sub |