VBA-variant gegevenstype (dimvariabele)

Variant Variabel Type

Een variantvariabele kan elk moment van gegevens bevatten (tekenreeks, gehele getallen, decimalen, objecten, enz.). Als u geen variabeletype declareert, wordt uw variabele als variant beschouwd.

Om een ​​Variant-variabele te declareren, gebruikt u de Dim Statement (afkorting van Dimension):

1 Dim varName als variant
1 Dim rng als variant

Om vervolgens een waarde aan een variabele toe te kennen, gebruikt u eenvoudig het gelijkteken:

1 varName = "Jan"
1 rng = Bladen(1).Bereik("A1")

Dit in een procedure zetten ziet er als volgt uit:

12345678910 Sub strVoorbeeld()'verklaar de varianten'Dim strNaam als variantDim rng als variant'vul de variabelen in'strName = "Fred Smit"Stel rng = Bladen(1) in.Bereik("A1")'vul het blad in'rng.Waarde = strNaamEinde sub

Als u de bovenstaande code uitvoert, wordt in cel A1 in blad 1 "Fred Smith" weergegeven

Aan de hand van de namen die hierboven zijn vermeld, kunnen we concluderen dat de varNaam tekst zou bevatten, en de objBlad zou een werkbladobject bevatten. Maar eigenlijk kan elk type gegevens naar de variabele worden geleid.

U zou de hierboven gedeclareerde variabelen als volgt kunnen invullen en er zou geen fout optreden.

1 varNaam = 6
1 objSheet - "Fred"

Het is ongebruikelijk om variantvariabelen te gebruiken en wordt niet als een goede praktijk beschouwd. Soms zijn Variant-variabelen echter nuttig.

Variantvariabele declareren op module- of globaal niveau

In het vorige voorbeeld hebt u de variabele Variant binnen een procedure gedeclareerd. Variabelen gedeclareerd met een procedure kunnen alleen binnen die procedure worden gebruikt.

In plaats daarvan kunt u Variant-variabelen declareren op module- of globaal niveau.

Moduleniveau

Moduleniveau variabelen worden bovenaan codemodules gedeclareerd met de dim uitspraak.

Deze variabelen kunnen bij elke procedure in die codemodule worden gebruikt.

Globaal niveau

Globaal niveau variabelen worden ook bovenaan codemodules gedeclareerd. Echter, in plaats van de dim verklaring, gebruik je de Openbaar statement om aan te geven dat de tekenreeksvariabele beschikbaar is voor gebruik in uw VBA-project.

1 Openbare strName als variant

Als je de variantvariabele op moduleniveau hebt gedeclareerd en in een andere module hebt gebruikt, zou er een fout optreden.

Als u het trefwoord Public had gebruikt om de variantvariabele te declareren, zou de fout niet optreden en zou de procedure perfect verlopen.

Een variant gebruiken om Excel te vullen

Overweeg de volgende procedure:

12345678910111213141516171819 Subtestvariabele'declareer een string om de productnaam vast te houden'Dim strProduct als string'declareer een geheel getal om de producthoeveelheid vast te houden'Dim iQty als geheel getal'verdubbelen om de productprijs en de totale prijs vast te houden'Dim dblPrijs als dubbelDim dblTotaal als dubbel'vul de variabelen in'strProduct = "Meel voor alle doeleinden"iQty = 3dblPrice = "$5,00"dblTotaal = "$15.00"'vul het Excel-blad in'Bereik ("A1") = strProductBereik ("A2") = iQtyBereik ("A3") = dblPrijsBereik ("A4") = dblTotaalEinde sub

Wanneer we deze code uitvoeren, treedt de volgende fout op.

Klik op Foutopsporing

U kunt geen dollarteken in de variabele plaatsen omdat de variabele wordt gedeclareerd als a Dubbele, en kan daarom geen tekenreekswaarden opslaan.

Verklaren dblPrijs en dblTotaal as Varianten, wat betekent dat u niet beperkt bent tot een gegevenstype.

1 Dim dblPrijs als variant
1 Dim dblTotal als variant

Voer de code opnieuw uit en de gegevens verschijnen in het Excel-blad zoals het hoort.

Let op: de gegevens die in A4 en A5 zijn ingevoerd, worden vervolgens automatisch door Excel omgezet naar getallen.

Een dynamische array declareren

Variantvariabelen zijn ook handig wanneer u een dynamische array declareert, omdat hierdoor de grootte van de array tijdens runtime kan veranderen.

Met eenVariantarray, hoeft u de arraygrootte niet te definiëren. De maat past zich automatisch aan.

123456789 Sub VariantArray()Dim arrList() als variant'Definieer waarden'arrList= Matrix (1, 2, 3, 4)'Verander waardenarrList= Array(1,2,3,4,5,6)'Uitgangspositie 4'MsgBox arrVar(4)Einde sub

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave