VBA String Array

Excel VBA-strängmatris

I VBA är strängmatrisen inget annat än en matrisvariabel som kan innehålla mer än ett strängvärde med en enda variabel.

För ett exempel, se nedanstående VBA-kod.

Koda:

 Sub String_Array_Example () Dim CityList (1 To 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 

I ovanstående kod har jag deklarerat som arrayvariabel och tilldelat längden på en array som 1 till 5.

 Dim CityList (1 till 5) som variant 

För denna arrayvariabel har jag tilldelat 5 stadsnamn som nämner varje arrayantal inom parentes.

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

Därefter har jag skrivit en kod för att visa dessa stadsnamn i meddelandefältet.

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

När jag kör den här koden får vi en meddelanderuta som visar alla stadsnamnen i en enda meddelanderuta.

Vi vet alla att detta har sparat så mycket tid från vårt schema genom att eliminera uppgiften att deklarera enskilda variabler för varje stad. En sak till som du behöver lära dig är dock att vi fortfarande kan minska linjekoden vi skriver för strängvärden. Låt oss titta på hur vi skriver kod för VBA-strängmatriser.

Exempel på strängmatris i Excel VBA

Nedan följer exemplen på en excel vba-strängmatris.

Du kan ladda ner denna VBA String Array Excel-mall här - VBA String Array Excel-mall

Exempel nr 1

Som vi har sett i ovanstående kod lärde vi oss att vi kan lagra mer än ett värde i variabeln baserat på den bestämda matrisstorleken.

Vad vi behöver göra är nu att inte bestämma arraylängden i god tid.

Koda:

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

Som du kan se ovan inom parentesen har jag inte skrivit några längder. Nu för denna variabel låt oss infoga värden med hjälp av VBA ARRAY-funktionen.

Inne i matrisen skickas värdena på dubbla citat, var och en åtskilda av ett komma (,).

Koda:

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

Behåll nu den gamla koden för att visa resultatet av stadsnamnen i meddelandefältet i VBA.

Koda:

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

En ändring jag har gjort i ovanstående kod är eftersom vi inte har bestämt den nedre gränsen och övre gränsen för en matrisvariabel och vi har använt ARRAY-funktionens matrisräkning kommer att börja från 0 inte från 1.

Så det är anledningen till att vi har nämnt värdena som CityList (0), ClityList (1), CityList (2), CityList (3) och CityList (4).

Kör nu koden genom excel genväg F5 eller manuellt, vi får samma resultat som vi får från den föregående koden.

Exempel 2

VBA String Array med LBOUND & UBOUND-funktioner

Om du inte vill visa hela stadslistan i en enda meddelandefält måste du inkludera slingor, definiera ytterligare en variabel för slingor.

Nu för att inkludera FOR NEXT loop är vi inte säkra på hur många gånger vi behöver köra koden, i det här fallet kan vi bestämma det som 5 gånger men det är inte rätt sätt att närma sig problemet. Så vad sägs om tanken på automatisk lägre och högre nivå array längd identifierare ???

När vi öppnar FÖR NÄSTA slinga bestämmer vi vanligtvis slinglängden som 1 till 5 eller 1 till 10 beroende på situationen. I stället för att ange siffrorna manuellt, låt oss använda LBOUND och UBOUND-funktionen för att automatiskt bestämma det lägre och det övre värdet.

För LBound och Ubound har jag angett arraynamn, dvs. CityList. VBA LBound identifierar det lägre värdet för arrayvariabeln och VBA UBound-funktionen identifierar det övre värdet för arrayvariabeln.

Visa nu värdet i meddelandefältet, istället för att infoga serienumret, låt slingvariabeln ”k” matrisvärdet automatiskt.

Koda:

 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) Nästa k End Sub 

Nu kommer meddelandefältet att visa varje stadsnamn separat.

Exempel # 3

VBA-strängmatris med delad funktion

Antag nu att du har stadsnamn som nedan.

Bangalore; Mumbai; Kolkata; Hydrabad; Orissa

I detta fall kombineras alla städer tillsammans med kolon som skiljer varje stad. I sådana fall måste vi använda SPLIT-funktionen för att separera varje stad.

För uttryck tillhandahåll stadslistan.

Koda:

 Sub String_Array_Example2 () Dim CityList () Som 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 

Nästa argument är "Avgränsare" dvs vad är det tecken som skiljer varje stad från andra städer, i detta fall "kolon".

Koda:

 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 ) Nästa k Avsluta Sub 

Nu bestämmer SPLIT-funktionsdelningsvärden också den högsta matrislängden.

Saker att komma ihåg

  • LBOUND och UBOUND är funktioner för att bestämma matrislängderna.
  • ARRAY-funktionen kan innehålla många värden för en deklarerad variabel.
  • En gång om du vill använda ARRAY-funktionen, bestäm inte matrislängden.