VBA -variantdatatype (dim variabel)

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

Du vil bidrage til udviklingen af ​​hjemmesiden, at dele siden med dine venner

wave wave wave wave wave