VBA-collectie

Excel VBA-verzamelingsobject

In VBA-codering kunnen we naast de bestaande verzameling items onder één groep ook onze eigen verzamelingsgroepen maken. In onze vele artikelen hebben we gesproken over objectvariabelen en in deze zelfstudie zullen we het VBA-verzamelingsobject in detail bekijken.

Als u ons vorige artikel "VBA-arrays" hebt doorgenomen, zal dit voor u veel gemakkelijker te begrijpen zijn. Arrays worden gebruikt om variabelen onder één dak te groeperen, op dezelfde manier wordt Collection ook gebruikt om een ​​groep variabelen op te slaan.

Collecties worden gebruikt om objecten op te slaan. Ze zijn veel flexibeler dan de VBA-arrays, terwijl arrays een vaste groottelimiet hebben, maar verzamelingen hebben op geen enkel moment een vaste groottelimiet en hoeven zelfs niet handmatig te worden aangepast.

VBA Collection lijkt sterk op het "VBA-woordenboek", maar het woordenboek vereist externe objectreferentie om het in te stellen onder het objectreferentievenster. Met VBA Dictionary moeten we het referentietype instellen als "Microsoft Scripting Runtime", maar Collection vereist geen van die extra aanpassingen.

Hoe een verzamelingsobject in VBA te maken?

Om te beginnen met verzamelen, moeten we de variabele declareren als "Collectie".

U kunt deze VBA Collection Excel-sjabloon hier downloaden - VBA Collection Excel-sjabloon

Code:

 Sub Collection_Example () Dim Col As Collection End Sub 

Omdat de collectie een objectvariabele is, moeten we de objectreferentie instellen door een nieuwe instantie te maken.

Code:

 Sub Collection_Example () Dim Col As Collection Set Col = New Collection End Sub 

Nu met de variabele hebben we toegang tot alle methoden van de verzamelingsvariabele “Col”.

Code:

 Sub Collection_Example () Dim Col As Collection Set Col = New Collection Col. End Sub 

Voordat we van deze methoden gebruik kunnen maken, moeten we een variabele als een string declareren.

Code:

 Sub Collection_Example () Dim Col As Collection Set Col = Nieuwe collectie Dim ColResult As String End Sub 

Gebruik nu de variabele "Col", kies "Add" -methode.

Code:

 Sub Collection_Example () Dim Col As Collection Set Col = New Collection Col. Add End Sub 

Onder de Add-methode hebben we bepaalde parameters. Laten we aannemen dat we mobiele merknamen opslaan met hun gemiddelde verkoopprijs op de markt.

Onder Item voert het argument de prijs van de mobiel in.

Code:

 Sub Collection_Example () Dim Col As Collection Set Col = New Collection Col.Add Item: = 15000, End Sub 

Voer vervolgens onder Sleutelargument de mobiele merknaam in.

Code:

 Sub Collection_Example () Dim Col As Collection Set Col = New Collection Col.Add Item: = 15000, Key: = "Redmi" End Sub 

Nu zullen we voor de variabele “ColResult” het resultaat van de “Col” objectvariabele opslaan.

Code:

 Sub Collection_Example () Dim Col As Collection Set Col = New Collection Col.Add Item: = 15000, Key: = "Redmi" ColResult = Col (End Sub 

Als je het haakje van de variabele “Col” opent, kunnen we het argument zien als Index. Voor dit argument moeten we de sleutelargumentwaarde van de Collection add-methode opgeven, dwz de naam van het mobiele merk.

Code:

 Sub Collection_Example () Dim Col As Collection Set Col = New Collection Col.Add Item: = 15000, Key: = "Redmi" ColResult = Col ("Redmi") End Sub 

Laat nu het resultaat zien in het berichtvenster in VBA.

Code:

 Sub Collection_Example () Dim Col As Collection Set Col = New Collection Col.Add Item: = 15000, Key: = "Redmi" ColResult = Col ("Redmi") MsgBox ColResult End Sub 

Oké, we zijn klaar als we de code uitvoeren, we zouden de prijs van het mobiele merk "Redmi" moeten zien.

Beter begrip van sleutel- en itemparameters

Ik weet zeker dat het niet gemakkelijk is om de parameters van het Collection-object te begrijpen. Ik zal het je uitleggen met een eenvoudig voorbeeld.

Stel je voor dat je een fruitmenu hebt met hun naam en prijs van het fruit. Stel dat u de fruitprijs van "Appel" zoekt op de naam van het fruit.

Om de prijs van het fruit te zoeken, moeten we de naam van het fruit vermelden, dwz in de VBA-taal van de verzameling Naam van het fruit is de sleutel en de prijs van het fruit is "Item".

Het is vergelijkbaar met het toepassen van de functie VERT.ZOEKEN of HORIZ.ZOEKEN, gebaseerd op de opzoekwaarde zullen we de vereiste gegevens uit de database halen. Hier is de opzoekwaarde Sleutel en het resultaat is Item.

Geavanceerd voorbeeld

Stel je voor dat je een winkelmanager bent in een van de winkels en dat je verantwoordelijk bent voor het beheren van de vragen van klanten. Een van die vragen van klanten is een vraag naar de productprijs.

U moet de klant toestaan ​​de prijs van het product met volledige informatie te doorzoeken. Evenzo moet u het bericht tonen als er geen gegevens zijn gevonden. Hieronder ziet u de voorbeeldcode die het invoervak ​​voor de gebruiker zal presenteren en die de naam van het product waarnaar ze op zoek zijn, moet invoeren, als het product zich in de collectie bevindt, wordt de prijs van het genoemde product weergegeven of anders toon het bericht als "Het product dat u zoekt bestaat niet".

Code:

 Sub Collection_Example2() Dim ItemsCol As Collection Dim ColResult As String Set ItemsCol = New Collection ItemsCol.Add Key:="Apple", Item:=150 ItemsCol.Add Key:="Orange", Item:=75 ItemsCol.Add Key:="Water Melon", Item:=45 ItemsCol.Add Key:="Mush Millan", Item:=85 ItemsCol.Add Key:="Mango", Item:=65 ColResult = Application.InputBox(Prompt:="Please Enter the Fruit Name") If ItemsCol(ColResult)  "" Then MsgBox "The Price of the Fruit " & ColResult & " is : " & ItemsCol(ColResult) Else MsgBox "Price of the Fruit You are Looking for Doesn't Exists in the Collection" End If End Sub