Type stringvariabele
Het gegevenstype String is een van de meest voorkomende gegevenstypen in VBA. Het slaat "strings" tekst op.
Om een variabele String-variabele te declareren, gebruikt u de Dim Statement (afkorting van Dimension):
1 | Dim strName als String |
Om een waarde aan een variabele toe te kennen, gebruik je het gelijkteken:
1 | strName = "Fred Smit" |
Dit in een procedure zetten ziet er als volgt uit:
12345678 | Sub strVoorbeeld()'declareer de string'Dim strName als string'vul de string in'strName = "Fred Smit"'toon het berichtvenster'MsgBox strnaamEinde sub |
Als u de bovenstaande code uitvoert, wordt het volgende berichtvenster weergegeven.
Vaste tekenreeksvariabele
Er zijn eigenlijk 2 soorten stringvariabelen - vast en variabel.
Met de "variabele" tekenreeksvariabele (weergegeven in het vorige voorbeeld) kan uw tekenreeks elke lengte hebben. Dit komt het meest voor.
De "vaste" tekenreeksvariabele definieert de grootte van de tekenreeks. Een vaste tekenreeks kan maximaal 65.400 tekens bevatten.
1 | Dim strName als string *20 |
Wanneer u een vaste variabele definieert, wordt het aantal tekens in de variabele vastgezet, zelfs als u minder tekens gebruikt.
Let op de spaties in de onderstaande afbeelding - de variabele heeft plaatshouders voor de rest van de tekens in de tekenreeks, aangezien 'Fred Smith' minder dan 20 tekens bevat.
Als u echter een tekenreeks hebt gedeclareerd zonder de lengte op te geven, bevat de tekenreeks slechts zoveel tekens als er aan worden doorgegeven.
Declareer stringvariabele op module- of globaal niveau
In het vorige voorbeeld hebt u de variabele String binnen een procedure gedeclareerd. Variabelen gedeclareerd met een procedure kunnen alleen binnen die procedure worden gebruikt.
In plaats daarvan kunt u String-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 strNaam als tekenreeks |
Als je de stringvariabele op moduleniveau hebt gedeclareerd en in een andere module hebt gebruikt, zou er een fout optreden.
Als u echter het trefwoord Public gebruikt om de tekenreeksvariabele te declareren, zou de fout niet optreden en zou de procedure perfect verlopen.
Converteer waarden die zijn opgeslagen als String
Er kan een tijd zijn dat u waarden in Excel hebt die als tekst zijn opgeslagen. U hebt bijvoorbeeld een CSV-bestand geïmporteerd dat tekst in plaats van cijfers heeft opgeleverd.
Merk op dat de waarde in A1 links uitgelijnd is, wat een tekstwaarde aangeeft.
U kunt een VBA-functie kan worden gebruikt om deze getallen naar tekst te converteren
12345678 | Sub ConvertValue()'vul de string in'strQty = Bereik ("A1")'vul de dubbele met de string'dblQty = strQty'vul het bereik in met het nummer'Bereik ("A1") = dblQtyEinde sub |
Nadat u de code hebt uitgevoerd, wordt het nummer naar rechts verplaatst om aan te geven dat het nu als een nummer is opgeslagen.
Dit is met name handig wanneer u door een groot aantal cellen loopt.
123456789101112131415 | Sub ConvertValue()Dim strQty As String, dblQty As DoubleDim rw als geheel getal, i als geheel getal'tel de rijen om te converteren'rw = Bereik ("A1", Bereik ("A1"). Einde (xlOmlaag)). Rijen. Aantal'loop door de cellen en zet ze om in een getal'Voor i = 0 Naar rw - 1'vul de string in'strQty = Bereik ("A1"). Offset (i, 0)'vul de dubbele met de string'dblQty = strQty'vul het bereik in met het nummer'Bereik ("A1"). Offset (i, 0) = dblQtyvolgende iEinde sub |
Het resultaat is dat alle cellen vervolgens worden geconverteerd naar getallen
Moe van het zoeken naar voorbeelden van VBA-codes? Probeer AutoMacro!
Converteer String opgeslagen als Waarden
Evenzo kunnen er waarden zijn die u van een tekenreeks naar een waarde moet converteren, bijvoorbeeld als u een voorloopnul op een telefoonnummer nodig heeft.
123456789101112131415 | Sub ConverterenString()Dim strPhone als string, dblPhone als dubbelDim rw als geheel getal, i als geheel getal'tel de rijen om te converteren'rw = Bereik ("A1", Bereik ("A1"). Einde (xlOmlaag)). Rijen. Aantal'loop door de cellen en zet ze om in een getal'Voor i = 0 Naar rw - 1'vul de string in'dblPhone = Bereik ("A1"). Offset (i, 0)'vul de dubbele met de string'strPhone = "'0" & dblPhone'vul het bereik in met het nummer'Bereik ("A1"). Offset (i, 0) = strphonevolgende iEinde sub |
Merk op dat u de tekenreeks moet beginnen met een apostrof ('), vóór de nul om Excel te vertellen dat de waarde als tekenreeks moet worden ingevoerd.