VBA String Array - Hvordan erklære og initialisere strengarray i Excel VBA?

Innholdsfortegnelse

Excel VBA String Array

I VBA er en strengmatrise ingenting annet enn en arrayvariabel som kan inneholde mer enn en strengverdi med en enkelt variabel.

Se for eksempel på VBA-koden nedenfor.

Kode:

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 koden ovenfor har jeg erklært som arrayvariabel og tildelt lengden på en array som 1 til 5.

Dim CityList (1 til 5) som variant

For denne arrayvariabelen har jeg tildelt 5 bynavn som nevner hvert arrayantall i parentes.

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

Deretter har jeg skrevet en kode for å vise disse bynavnene i meldingsboksen.

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

Når jeg kjører denne koden, får vi en meldingsboks som viser alle bynavnene i en enkelt meldingsboks.

Vi vet alle at dette har spart så mye tid fra tidsplanen vår ved å eliminere oppgaven med å erklære individuelle variabler for hver by. Imidlertid er en ting du trenger å lære at vi fortsatt kan redusere linjekoden vi skriver for strengverdier. La oss se på hvordan vi skriver kode for VBA-strengarrayer.

Eksempler på strengarray i Excel VBA

Nedenfor er eksemplene på et excel VBA-strengarray.

Eksempel 1

Som vi har sett i koden ovenfor, lærte vi at vi kunne lagre mer enn en verdi i variabelen basert på den angitte matrisestørrelsen.

Nå, det vi trenger å gjøre er å ikke bestemme lengden på matrisen i god tid.

Kode:

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

Som du kan se ovenfor inne i parentesen, har jeg ikke skrevet noen lengder. Nå for denne variabelen, la oss sette inn verdier ved å bruke VBA ARRAY-funksjonen.

Inne i matrisen sendes verdiene på doble anførselstegn, hver atskilt med komma (,).

Kode:

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

Behold nå den gamle koden for å vise resultatet av bynavn i meldingsboksen i VBA.

Kode:

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

En endring jeg har gjort i koden ovenfor, er siden vi ikke har bestemt den nedre grensen og øvre grense for en matrixvariabel, og vi har brukt ARRAY-funksjonen, vil arraytellingen starte fra 0, ikke fra 1.

Så det er grunnen til at vi har nevnt verdiene som CityList (0), ClityList (1), CityList (2), CityList (3) og CityList (4).

Kjør nå koden gjennom excel snarvei F5 eller manuelt. Vi får samme resultat som vi får fra forrige kode.

Eksempel 2

VBA String Array med LBOUND & UBOUND-funksjoner

I tilfelle hvis du ikke vil vise alle bylistene i en enkelt meldingsboks, må du inkludere sløyfer, definere en variabel til for sløyfer.

Nå for å inkludere FOR NEXT loop, er vi ikke sikre på hvor mange ganger vi trenger å kjøre koden. I dette tilfellet kan vi bestemme det som fem ganger, men det er ikke den rette måten å nærme seg problemet på. Så hva med ideen om automatisk lavere og høyere nivå array lengde identifikator ???

Når vi åpner FOR NESTE sløyfe, bestemmer vi vanligvis sløyfelengden som 1 til 5 eller 1 til 10, avhengig av situasjonen. I stedet for å angi tallene manuelt, la oss bruke funksjonen LBOUND og UBOUND for å bestemme den nedre verdien og den øvre verdien automatisk.

For LBound og Ubound har jeg oppgitt et matrisenavn, dvs. CityList. VBA LBound identifiserer den nedre verdien av arrayvariabelen, og VBA UBound-funksjonen identifiserer den øvre verdien av arrayvariabelen.

Vis nå verdien i meldingsboksen, i stedet for å sette inn serienummeret, la sløyfevariabelen “k” ta matriseverdien automatisk.

Kode:

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) Neste k Slutt Sub

Nå viser meldingsboksen hvert bynavn separat.

Eksempel 3

VBA String Array med delt funksjon

Anta nå at du har bynavn som nedenfor.

Bangalore; Mumbai; Kolkata; Hydrabad; Orissa

In this case, all the cities are combined together with the colon separating each city. In such cases, we need to use the SPLIT function to separate each city.

For Expression, supply the city list.

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

The next argument is “Delimiter,” i.e., what is the one character that is separating each city from other cities. In this case, “Colon.”

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

Nå bestemmer SPLIT-funksjonsdelte verdier også den høyeste matriselengden.

Ting å huske

  • LBOUND og UBOUND er funksjoner for å bestemme matriselengdene.
  • ARRAY-funksjonen kan inneholde mange verdier for en deklarert variabel.
  • En gang hvis du vil bruke ARRAY-funksjonen, ikke bestem matriselengden.

Interessante artikler...