VBA String Array - Sådan erklæres og initialiseres strengarray i Excel VBA?

Indholdsfortegnelse

Excel VBA-strengarray

I VBA er en strengmatrix intet andet end en matrixvariabel, der kan indeholde mere end en strengværdi med en enkelt variabel.

Se for eksempel på nedenstående VBA-kode.

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 ovenstående kode har jeg erklæret som matrixvariabel og tildelt længden af ​​en matrix som 1 til 5.

Dim CityList (1 til 5) som variant

For denne arrayvariabel har jeg tildelt 5 bynavne, der nævner hvert array-antal i parentes.

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

Dernæst har jeg skrevet en kode for at vise disse bynavne i meddelelsesfeltet.

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

Når jeg kører denne kode, får vi et meddelelsesfelt, der viser alle bynavne i en enkelt meddelelsesboks.

Vi ved alle, at dette har sparet så meget tid fra vores tidsplan ved at fjerne opgaven med at erklære individuelle variabler for hver by. En ting mere, du skal lære, er dog, at vi stadig kan reducere linjekoden, vi skriver for strengværdier. Lad os se på, hvordan vi skriver kode til VBA-strengarrays.

Eksempler på strengarray i Excel VBA

Nedenfor er eksemplerne på et excel VBA-strengarray.

Eksempel nr. 1

Som vi har set i ovenstående kode, lærte vi, at vi kunne gemme mere end en værdi i variablen baseret på den valgte arraystørrelse.

Hvad vi nu skal gøre, er ikke at bestemme array-længden i god tid.

Kode:

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

Som du kan se ovenfor inden for parentesen, har jeg ikke skrevet nogen længder. Lad os nu indsætte værdier for denne variabel ved hjælp af VBA ARRAY-funktionen.

Inde i Array videresender værdierne på dobbelt anførselstegn, hver adskilt med et komma (,).

Kode:

Sub String_Array_Example () Dim CityList () Som Variant CityList = Array ("Bangalore", "Mumbai", "Kolkata", "Hyderabad", "Orissa") Afslut sub

Behold nu den gamle kode for at vise resultatet af bynavne i meddelelsesfeltet i VBA.

Kode:

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, jeg har foretaget i ovenstående kode, er, da vi ikke har besluttet den nedre grænse og øvre grænse for en matrixvariabel, og vi har brugt ARRAY-funktionens matrixantal starter fra 0, ikke fra 1.

Så det er grunden til, at vi har nævnt værdierne som CityList (0), ClityList (1), CityList (2), CityList (3) og CityList (4).

Kør nu koden gennem excel genvejstast F5 eller manuelt. Vi får det samme resultat, som vi får fra den forrige kode.

Eksempel 2

VBA String Array med LBOUND & UBOUND-funktioner

Hvis du ikke vil vise alle bylisterne i en enkelt meddelelsesboks, skal du medtage sløjfer, definere en mere variabel til sløjfer.

Nu for at inkludere FOR NEXT loop er vi ikke sikre på, hvor mange gange vi har brug for at køre koden. I dette tilfælde kan vi beslutte det som 5 gange, men det er ikke den rigtige måde at nærme sig problemet på. Så hvad med ideen om automatisk lavere og højere niveau array længde identifikator ???

Når vi åbner FOR NÆSTE sløjfe, bestemmer vi normalt sløjfelængden som 1 til 5 eller 1 til 10 afhængigt af situationen. I stedet for at indtaste numrene manuelt, lad os bruge LBOUND og UBOUND-funktionen til automatisk at beslutte den nederste og øverste værdi.

For LBound og Ubound har jeg leveret et array-navn, dvs. CityList. VBA LBound identificerer den nedre værdi af arrayvariablen, og VBA UBound-funktionen identificerer den øvre værdi af arrayvariablen.

Vis nu værdien i meddelelsesfeltet, i stedet for at indsætte serienummeret, lad sløjfevariablen “k” tage arrayværdien automatisk.

Kode:

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

Nu viser meddelelsesfeltet hvert bynavn separat.

Eksempel 3

VBA strengarray med splitfunktion

Antag nu, at du har bynavne 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

Nu bestemmer SPLIT-funktionsopdelte værdier også den højeste array-længde.

Ting at huske

  • LBOUND og UBOUND er funktioner til at bestemme array-længderne.
  • ARRAY-funktionen kan indeholde mange værdier for en deklareret variabel.
  • En gang, hvis du vil bruge ARRAY-funktionen, skal du ikke bestemme array-længden.

Interessante artikler...