VBA -variantdatatype (dim variabel)

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

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave