VBA String Array

Excel VBA String Array

In VBA is String-array niets anders dan een array-variabele die meer dan één stringwaarde met een enkele variabele kan bevatten.

Kijk voor een voorbeeld naar de onderstaande VBA-code.

Code:

 Sub String_Array_Example () Dim CityList (1 tot 5) As Variant CityList (1) = "Bangalore" CityList (2) = "Mumbai" CityList (3) = "Kolkata" CityList (4) = "Hyderabad" CityList (5) = "Orissa" MsgBox CityList (1) & "," & CityList (2) & "," & CityList (3) & "," & CityList (4) & "," & CityList (5) End Sub 

In de bovenstaande code heb ik als arrayvariabele gedeclareerd en de lengte van een array toegewezen van 1 tot 5.

 Dim CityList (1 tot 5) als variant 

Voor deze arrayvariabele heb ik 5 stadsnamen toegewezen met vermelding van elk array-aantal tussen haakjes.

CityList (1) = "Bangalore" CityList (2) = "Mumbai" CityList (3) = "Kolkata" CityList (4) = "Hyderabad" CityList (5) = "Orissa"

Vervolgens heb ik een code geschreven om deze plaatsnamen in het berichtvenster weer te geven.

MsgBox CityList (1) & "," & CityList (2) & "," & CityList (3) & "," & CityList (4) & "," & CityList (5)

Als ik deze code uitvoer, krijgen we een berichtvenster met alle plaatsnamen in één berichtvenster.

We weten allemaal dat dit zoveel tijd heeft bespaard in ons schema door de taak om individuele variabelen voor elke stad te declareren, te elimineren. Nog een ding dat u moet leren, is dat we nog steeds de regelcode die we schrijven voor stringwaarden kunnen verminderen. Laten we eens kijken hoe we code schrijven voor VBA-stringarrays.

Voorbeelden van String Array in Excel VBA

Hieronder staan ​​de voorbeelden van een Excel VBA-stringarray.

U kunt deze VBA String Array Excel-sjabloon hier downloaden - VBA String Array Excel-sjabloon

Voorbeeld 1

Zoals we in de bovenstaande code hebben gezien, hebben we geleerd dat we meer dan één waarde in de variabele kunnen opslaan op basis van de bepaalde array-grootte.

Wat we nu moeten doen, is de array-lengte niet ruim van tevoren bepalen.

Code:

 Sub String_Array_Example1 () Dim CityList () As Variant End Sub 

Zoals je hierboven tussen haakjes kunt zien, heb ik geen lengtes geschreven. Laten we nu voor deze variabele waarden invoegen met behulp van de VBA ARRAY-functie.

Geef binnen de array de waarden door met dubbele aanhalingstekens, gescheiden door een komma (,).

Code:

 Sub String_Array_Example () Dim CityList () As Variant CityList = Array ("Bangalore", "Mumbai", "Kolkata", "Hyderabad", "Orissa") End Sub 

Bewaar nu de oude code om het resultaat van plaatsnamen in het berichtvenster in VBA weer te geven.

Code:

 Sub String_Array_Example1 () Dim CityList () As Variant CityList = Array ("Bangalore", "Mumbai", "Kolkata", "Hyderabad", "Orissa") MsgBox CityList (0) & "," & CityList (1) & " , "& CityList (2) &", "& CityList (3) &", "& CityList (4) End Sub 

Een wijziging die ik in de bovenstaande code heb aangebracht, is dat we de ondergrens en de bovengrens van een arrayvariabele nog niet hebben bepaald en we hebben ARRAY-functie gebruikt, de array-telling begint bij 0 en niet bij 1.

Daarom hebben we de waarden CityList (0), ClityList (1), CityList (2), CityList (3) en CityList (4) genoemd.

Voer nu de code uit via Excel-sneltoets F5 of handmatig, we krijgen hetzelfde resultaat als we krijgen van de vorige code.

Voorbeeld # 2

VBA String Array met LBOUND & UBOUND-functies

Als u niet alle stedenlijst in een enkel berichtvenster wilt weergeven, moet u loops opnemen, definieer nog een variabele voor loops.

Om nu de FOR NEXT-lus op te nemen, weten we niet zeker hoe vaak we de code moeten uitvoeren, in dit geval kunnen we het vijf keer beslissen, maar dat is niet de juiste manier om het probleem te benaderen. Dus hoe zit het met het idee van een automatisch lager en hoger niveau array-lengte-ID ???

Wanneer we de FOR NEXT-lus openen, beslissen we meestal dat de luslengte 1 tot 5 of 1 tot 10 is, afhankelijk van de situatie. In plaats van de nummers handmatig in te voeren, laten we de LBOUND- en UBOUND-functie gebruiken om automatisch de lagere waarde en de hoogste waarde te bepalen.

Voor LBound en Ubound heb ik de arraynaam opgegeven, dwz CityList. VBA LBound identificeert de onderste waarde van de arrayvariabele en VBA UBound-functie identificeert de bovenste waarde van de arrayvariabele.

Toon nu de waarde in het berichtvenster, in plaats van het serienummer in te voeren, laat de lusvariabele "k" de arraywaarde automatisch aannemen.

Code:

 Sub String_Array_Example1 () Dim CityList () As Variant Dim k As Integer CityList = Array ("Bangalore", "Mumbai", "Kolkata", "Hyderabad", "Orissa") For k = LBound (CityList) To UBound (CityList) MsgBox CityList (k) Volgende k End Sub 

Nu zal het berichtvenster elke stadsnaam afzonderlijk tonen.

Voorbeeld # 3

VBA String Array met Split-functie

Stel nu dat u stadsnamen heeft zoals hieronder.

Bangalore; Mumbai; Kolkata; Hydrabad; Orissa

In dit geval worden alle steden gecombineerd met de dubbele punt die elke stad scheidt. In dergelijke gevallen moeten we de SPLIT-functie gebruiken om elke stad te scheiden.

Geef voor Expression de stedenlijst op.

Code:

 Sub String_Array_Example2 () Dim CityList () As String Dim k As Integer CityList = Split ("Bangalore; Mumbai; Kolkata; Hydrabad; Orissa", For k = LBound (CityList) To UBound (CityList) MsgBox CityList (k) Next k End Sub 

Het volgende argument is "Scheidingsteken", dwz wat is het enige teken dat elke stad van andere steden scheidt, in dit geval "dubbele punt".

Code:

 Sub String_Array_Example2 () Dim CityList () As String Dim k As Integer CityList = Split ("Bangalore; Mumbai; Kolkata; Hydrabad; Orissa", ";") Voor k = LBound (CityList) To UBound (CityList) MsgBox CityList (k ) Volgende k End Sub 

SPLIT-functie split-waarden bepalen nu ook de hoogste array-lengte.

Dingen om te onthouden

  • LBOUND en UBOUND zijn functies om de array-lengtes te bepalen.
  • ARRAY-functie kan veel waarden bevatten voor een gedeclareerde variabele.
  • Als u eenmaal de ARRAY-functie wilt gebruiken, beslist u niet over de array-lengte.