En samling är en datatyp som lagrar objekt precis som matriser (men olika). När du skriver grundläggande VBA -koder måste du ha använt arbetsböcker, kalkylblad, intervall etc. Alla är samlingar. I den här artikeln kommer vi att lära oss om VBA -samlingar.
Vad är en samling i VBA?
En samling är en datatyp som lagrar liknande typ av objekt precis som matriser.
Men till skillnad från matriser kan dess storlek ökas eller minskas dynamiskt enligt behov.
Du kan lägga till, hitta, hämta och ta bort objekt från samlingar.
Till skillnad från array kan du inte ändra värden för objekt i samlingar. Om du vill, använd matriser som objekt i samlingen.
En samling har fyra egenskaper eller metoder kopplade till den.
Collection.Add Collection.Item Collection.Count Collection.Remove
Genom den här artikeln kommer jag att utforska användningen av dessa egenskaper.
Hur skapar jag en samling i VBA?
En samling är ett objekt och därför är det nödvändigt att deklarera och initialisera den. Liksom alla andra objekt i VBA finns det två metoder för att skapa en samling i VBA.
1. Direkt skapande
Dim objekt som ny kollektion
I ovanstående metod skapas objektet direkt. Du kan börja använda den här samlingen för dina krav omedelbart.
2. Försenad skapelse
Dim objekt som Collection Set items = New Collection
I denna metod skapar vi först en referens för samling och vid behov initierar vi med ett samlingsobjekt. Med denna metod kan du välja att skapa samlingen baserat på några kriterier.
Lägga till objekt i en samling (Collection.Add)
Vi använder metoden Lägg till för att lägga till nya objekt i en samling.
objekt.Lägg till "Äpplen"
Ovanstående kod kommer att lägga till strängen "Äpplen" i samlingen.
Lägg till 1.4
Ovanstående kod kommer att lägga till dubbla 1.4 till slutet av samlingen.
Vi kan också definiera nycklar till dessa objekt. Dessa nycklar kan användas för att komma åt objekten i samlingen.
Infoga objekt i samlingen före eller efter ett befintligt objekt
Metoden Lägg till lägger till nya objekt i slutet av samlingen.
Tilläggsmetoden har fyra parametrar.
Lägg till (objekt, [nyckel], [före], [efter])
Det första argumentet är nödvändigt. Det är objektet eller som du vill lägga till i samlingen. Restargument är valfria. Vi kommer att se användningen av dessa argument i detta avsnitt.
Om vi vill lägga till något objekt före eller efter något pertikulärt index/nyckel, använder vi Före och Efter -parametrarna i metoden Lägg till.
items.Add True, "b", "cnst" 'Eller items.Add True, Before: = "cnst"
Båda raderna kommer att infoga ett booleskt värde före nyckeln "cnst" i VBA Collection -artiklarna.
För att infoga ett objekt efter ett pertikulärt index/objekt/nyckel använder vi After -parameter i Add -metoden.
'infoga "Mango" med nyckeln "m" efter nyckeln "cnst" -objekt. Lägg till "Mango", Nyckel: = "m", efter: = "b"
Ovanför raden infogas "Mango" med tangenten "m" efter tangenten "b".
Notera: Nycklarna till föremål ska vara unika. Någon nyckel som redan finns i samlingen accepteras inte. VBA returnerar ett felmeddelande om att "nyckeln redan är associerad med ett element i denna samling".
Vi kan använda detta till vår fördel få en unik lista från samlingen.
Få åtkomst till samlingsobjekt (Collection.Item)
Det finns två metoder för att komma åt föremålen i en samling.
- CollectionName ("index/nyckel")
- CollectionName.Item ("index/key")
Till exempel för att komma åt en medlem i en samling objekt vid index 1 och nyckeln "apl" kan jag använda någon av nedanstående VBA -koder.
Debug.Print items.Item (1) - Debug.Print items (1) - Debug.Print items.Item ("apl") - Debug.Print items ("apl")
Hur får man räkna objekt i en samling? (Collection.Count)
För att få totalt antal objekt eller objekt i en samling använder vi .Count -funktionen i samlingen. .Count -metoden returnerar det totala antalet objekt i samlingen.
artiklar. Räkna
Ovanför raden visas antalet objekt som samlingen har.
Hur får jag tillgång till alla föremål i en samling?
Det enda sättet att komma åt alla föremål i samlingen i VBA är loopar. Vi upprepar varje samling för att komma åt dem. För det använder vi för loop. För varje loop anses vara det snabbaste och renaste sättet att komma åt samlingsobjekt.
Looping Through a Collection i VBA
Det finns olika sätt att gå igenom samlingen i VBA. Vi kommer att använda det mest eleganta för varje loop för att iterera genom samlingen.
För att bläddra igenom varje objekt i en samling, använd bara denna rad med VBA -kod.
För varje itm I objekt Debug.Print itm Nästa itm
Ta bort objekt från en samling (samling. Ta bort)
För att ta bort ett objekt från en vba -samling kan vi använda borttagningsmetoden. Ta bort -metoden tar ett argument. Det kan vara indexet eller nyckeln till objektet (om tillgängligt).
items.Remove (1) 'using index - items.Remove 1 - items.Remove ("apl")' using key - items.Remove "apl"
Tar bort samling i VBA
Du kan inte ta bort en samling i vba. Du kan dock ta bort alla objekt i den samlingen genom att ställa in den igen som en ny samling.
Set items = Ny samling
Den här kodraden skapar en ny samling av objektens adress. Därför kommer vår samling att tömmas.
Array vs Collection i VBA
Array |
Samling |
Så ja grabbar, det här är grunderna i samlingar. Det finns många fördelar och användningar av VBA -samling i kontorsverktyg. Vi kommer att utforska dem tillsammans. Fram till dess, om du har några frågor angående insamling eller något relaterat till Excel/VBA, skriv ner i kommentarfältet nedan.