Variant Variabel Type
En variantvariabel kan inneholde en hvilken som helst tid med data (streng, heltall, desimaler, objekter, etc.). Hvis du ikke deklarerer en variabeltype, blir variabelen din betraktet som variant.
For å deklarere en variantvariabel bruker du Dim Statement (forkortelse for Dimension):
1 | Dim varName som variant |
1 | Dim rng som variant |
For deretter å tilordne en verdi til en variabel, bare bruk likhetstegnet:
1 | varName = "John" |
1 | rng = Ark (1) .Range ("A1") |
Å sette dette inn i en prosedyre ser slik ut:
12345678910 | Sub strExample ()'erklærer varianteneDim strName Som variantDim rng Som variant'fyll ut variablenestrName = "Fred Smith"Sett rng = Sheets (1) .Range ("A1")'fyll ut arketrng.Value = strNameSlutt Sub |
Hvis du kjører koden ovenfor, fylles celle A1 i ark 1 med "Fred Smith"
Ved navnene deklarert ovenfor, kan vi konkludere med at varName ville inneholde tekst, og objSheet ville inneholde et regnearkobjekt. Men faktisk kan alle typer data rettes til variabelen.
Du kan fylle ut variablene deklarert ovenfor som følger, og det vil ikke oppstå noen feil.
1 | varName = 6 |
1 | objSheet - "Fred" |
Det er uvanlig å bruke variantvariabler og anses ikke som god praksis. Noen ganger er variantvariabler imidlertid nyttige.
Erklær variantvariabel på modul eller globalt nivå
I forrige eksempel erklærte du variabelvarianten i en prosedyre. Variabler deklarert med en prosedyre kan bare brukes innenfor denne prosedyren.
I stedet kan du deklarere variantvariabler på modul- eller globalt nivå.
Modulenivå
Modulenivå variabler deklareres øverst i kodemodulene med Dim uttalelse.
Disse variablene kan brukes med alle prosedyrer i den kodemodulen.
Globalt nivå
Globalt nivå variabler deklareres også øverst i kodemodulene. Imidlertid, i stedet for å bruke Dim uttalelse, bruker du Offentlig setning for å indikere at strengvariabelen er tilgjengelig for bruk i hele VBA -prosjektet.
1 | Offentlig strName som variant |
Hvis du deklarerte variantvariabelen på modulnivå og brukte i en annen modul, ville det oppstå en feil.
Hvis du hadde brukt det offentlige søkeordet for å deklarere variabelvariabelen, ville feilen ikke oppstå og prosedyren ville fungere perfekt.
Bruke en variant for å fylle ut Excel
Vurder følgende prosedyre:
12345678910111213141516171819 | Deltest Variabel'erklære en streng for å beholde produktnavnetDim strProdukt som streng'erklærer et helt tall for å beholde produktmengdenDim iQty som heltall'erklærer dobler for å holde produktprisen og totalprisenDim dblPris som dobbelDim dblTotalt som dobbelt'fyll ut variablenestrProduct = "All Purpose Mel"iQty = 3dblPrice = "$ 5,00"dblTotal = "$ 15,00"'fyll ut Excel -arketOmråde ("A1") = strProductOmråde ("A2") = iQtyOmråde ("A3") = dblPrisOmråde ("A4") = dblTotalSlutt Sub |
Når vi kjører denne koden, oppstår følgende feil.
Klikk på Debug
Du kan ikke sette et dollartegn i variabelen ettersom variabelen er deklarert som en Dobbelt, og kan derfor ikke lagre strengverdier.
Erklære dblPris og dblTotalt som varianter, noe som betyr at du ikke er begrenset til en datatype.
1 | Dim dblPris som variant |
1 | Dim dblTotal som variant |
Kjør koden på nytt, og dataene vil vises i Excel-arket som det skal.
Vær oppmerksom på at dataene som er angitt i A4 og A5, automatisk blir konvertert av Excel til tall.
Deklarere en dynamisk matrise
Variantvariabler er også nyttige når du deklarerer en dynamisk matrise ettersom de lar størrelsen på matrisen endres i løpet av kjøretiden.
Med enVariant Array, trenger du ikke å definere matrisestørrelsen. Størrelsen justeres automatisk.
123456789 | Sub VariantArray ()Dim arrList () Som variant'Definer verdierarrList = Array (1, 2, 3, 4)'Endre verdierarrList = Array (1,2,3,4,5,6)'Utgangsposisjon 4MsgBox arrVar (4)Slutt Sub |