Slik bruker du VBA -samlinger i Excel

Anonim


En samling er en datatype som lagrer objekter akkurat som matriser (men forskjellige). Mens du skriver grunnleggende VBA -koder, må du ha brukt arbeidsbøker, regneark, områder osv. Alle er samlinger. I denne artikkelen vil vi lære om VBA -samlinger.
Hva er en samling i VBA?
En samling er en datatype som lagrer lignende type objekter akkurat som matriser.

Men i motsetning til matriser, kan størrelsen økes eller reduseres dynamisk etter behov.

Du kan legge til, finne, hente og slette elementer fra samlinger.

I motsetning til matriser kan du ikke endre verdier for elementer i samlinger. Hvis du vil, kan du bruke matriser som element i samlingen.

En samling har 4 egenskaper eller metoder knyttet til den.

 Collection.Add Collection.Item Collection.Count Collection.Remove 

Gjennom denne artikkelen vil vil utforske bruken av disse egenskapene.
Hvordan lage en samling i VBA?
En samling er et objekt, derfor er det nødvendig å deklarere og initialisere den. Som alle andre objekter i VBA, er det to metoder for å lage en samling i VBA.
1. Umiddelbar opprettelse

Dim elementer som ny samling

I metoden ovenfor blir objektet umiddelbart opprettet. Du kan begynne å bruke denne samlingen for dine krav umiddelbart.

2. Forsinket opprettelse

 Dim elementer som Collection Set items = Ny samling 

I denne metoden oppretter vi først en referanse for samling, og når det er nødvendig initialiserer vi med et samlingsobjekt. Ved å bruke denne metoden kan du velge å lage samlingen basert på noen kriterier.

Legge til elementer i en samling (Collection.Add)
Vi bruker metoden Legg til for å legge til nye varer i en samling.

legg til "Epler"

Koden ovenfor vil legge til strengen "Epler" i samlingen.

Legg til 1.4

Koden ovenfor legger til dobbel 1.4 på slutten av samlingen.

Vi kan også definere nøkler til disse elementene. Disse tastene kan brukes til å få tilgang til elementene i samlingen.

Sette inn elementer i samlingen før eller etter et eksisterende element

Add -metoden legger til nye elementer på slutten av samlingen.

Add -metoden har fire parametere.

Legg til (element, [nøkkel], [før], [etter])

Det første argumentet er nødvendig. Det er objektet eller som du vil legge til i samlingen. Restargumenter er valgfrie. Vi vil se bruken av disse argumentene i denne delen.

Hvis vi vil legge til et element før eller etter en pertikulær indeks/nøkkel, bruker vi før og etter -parametere for metoden Legg til.

items.Add True, "b", "cnst" 'Eller items.Add True, Before: = "cnst"

Begge linjene vil sette inn en boolsk verdi før nøkkelen "cnst" i VBA Collection -elementene.

For å sette inn et element etter en pertikulær indeks/element/nøkkel bruker vi After -parameteren Legg til -metode.

'sette inn "Mango" med nøkkelen "m" etter nøkkelen "cnst" -elementer. Legg til "Mango", Nøkkel: = "m", etter: = "b"

Over linjen vil du sette inn "Mango" med tasten "m" etter nøkkelen "b".

Merk: Nøklene til elementene skal være unike. Enhver nøkkel som allerede finnes i samlingen vil ikke bli akseptert. VBA returnerer en feilmelding om at "nøkkelen allerede er knyttet til et element i denne samlingen".

Vi kan bruke dette til vår fordel få en unik liste fra samlingen.
Få tilgang til samlinger (Collection.Item)

Det er to metoder for å få tilgang til elementene i en samling.

  1. Samlingsnavn ("indeks/nøkkel")
  2. CollectionName.Item ("indeks/nøkkel")

For eksempel for å få tilgang til et medlem i en samling elementer på indeks 1 og tast "apl", kan jeg bruke hvilken som helst av VBA -kodene nedenfor.

Debug.Print items.Item (1) - Debug.Print items (1) - Debug.Print items.Item ("apl") - Debug.Print items ("apl")


Hvordan få tellingen av gjenstander i en samling? (Collection.Count)
For å få totalt antall objekter eller elementer i en samling, bruker vi .Count -funksjonen i samlingen. .Count -metoden returnerer totalt antall varer i samlingen.

 varer. Antall

Over linjen viser antallet objekter samlingen har.

Hvordan få tilgang til alle elementene i en samling?

Den eneste måten å få tilgang til alle elementene i samlingen i VBA er sløyfer. Vi går gjennom hvert innsamlingselement for å få tilgang til dem. Til det bruker vi for loop. For hver sløyfe regnes som den raskeste og reneste måten å få tilgang til samleobjekter.
Looping Through a Collection i VBA

Det er forskjellige måter å gå gjennom samlingen i VBA. Vi vil bruke den mest elegante for hver sløyfe for å gjenta gjennom samlingen.

For å gå gjennom hvert element i en samling, bare bruk denne VBA -koden.

For hver itm I elementer Debug.Print itm Neste itm


Fjerne elementer fra en samling (Collection.Remove)

For å fjerne et element fra en vba -samling, kan vi bruke Fjern -metoden. Fjernmetoden tar ett argument. Det kan være indeksen eller nøkkelen til elementet (hvis tilgjengelig).

items.Remove (1) 'using index - items.Remove 1 - items.Remove ("apl")' using key - items.Remove "apl"

Sletter samling i VBA

Vel, du kan ikke slette en samling i vba. Du kan imidlertid fjerne alle elementene i samlingen ved å angi den igjen som en ny samling.

Sett elementer = Ny samling

Denne kodelinjen vil opprette en ny samling på adressen til elementene. Derfor blir samlingen vår tømt.

Array vs Collection i VBA

    Array

  1. Matrisestørrelse er forhåndsdefinert. Størrelsen på matrisen kan ikke endres normalt.
  2. Array kan bare inneholde samme type data, og typen må deklareres først.
  3. Indeksering i array starter fra 0
  4. Array -medlemmer har ingen tilknyttet nøkkel.
  5. Matriser er mutable. Du kan endre verdiene til medlemmene.

    Samling

  1. Samlingens størrelse endres etter hvert som elementene legges til eller fjernes.
  2. En samling kan inneholde et hvilket som helst antall datatyper. Som du har sett i eksemplene ovenfor.
  3. Indeksering i VBA Collection starter fra 1.
  4. Samlingsmedlemmer kan ha nøkler tilknyttet.
  5. Samlinger er uforanderlige. Du kan ikke endre verdiene til medlemmet direkte.

Så ja gutta, dette er det grunnleggende i samlinger. Det er mange fordeler og bruksområder med VBA -samling i kontorverktøy. Vi skal utforske dem sammen. Inntil da, hvis du har spørsmål angående samling eller noe relatert til Excel/VBA, legg det ned i kommentarfeltet nedenfor.