VBA Collection

Excel VBA-samlingsobjekt

I VBA-kodning bortsett från den befintliga samlingen av objekt under en grupp kan vi också skapa våra egna samlingsgrupper. I våra många artiklar har vi talat om objektvariabler och i denna handledning kommer vi att gå igenom VBA-samlingsobjektet i detalj.

Om du har gått igenom vår tidigare artikel "VBA Arrays" blir det mycket lättare för dig att förstå. Arrays används för att gruppera variabler under ett tak, på samma sätt används Collection också för att lagra en grupp variabler.

Samlingar används för att lagra objekt. De är mycket mer flexibla än VBA-matriserna medan matriser har en fast storlekstorlek men samlingar har ingen fast storleksgräns vid en viss tidpunkt och kräver inte ens manuell storlek.

VBA-samlingen liknar ”VBA-ordlistan” men ordboken kräver att extern objektreferens ställs in under objektreferensfönstret. Med VBA Dictionary måste vi ställa in referens typen som "Microsoft Scripting Runtime" men Collection kräver ingen av dessa extra tillbehör.

Hur skapar man samlingsobjekt i VBA?

För att komma igång med insamling först måste vi deklarera variabeln som "Samling".

Du kan ladda ner den här VBA-samlingen Excel-mall här - VBA-samlingen Excel-mall

Koda:

 Sub Collection_Example () Dim Col Som Collection End Sub 

Eftersom samlingen är en objektvariabel måste vi ställa in objektreferensen genom att skapa en ny instans.

Koda:

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

Nu med variabeln kan vi komma åt alla metoder för samlingsvariabeln "Col".

Koda:

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

Innan vi använder dessa metoder måste vi deklarera en variabel som en sträng.

Koda:

 Sub Collection_Example () Dim Col As Collection Set Col = New Collection Dim ColResult Som strängänd Sub 

Använd nu variabeln "Col" och välj "Add" -metoden.

Koda:

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

Under metoden Lägg till har vi vissa parametrar. Låt oss anta att vi lagrar mobila varumärken med deras genomsnittliga försäljningspris på marknaden.

Under artikel anger argumentet priset på mobilen.

Koda:

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

Nästa under Key argument anger mobila varumärke.

Koda:

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

Nu för variabeln "ColResult" lagrar vi resultatet av "Col" -objektvariabeln.

Koda:

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

När du öppnar parentesen för variabeln "Col" kan vi se argumentet som Index för detta argument. Vi måste ange nyckelargumentvärdet från samlingsmetoden, dvs. namnet på mobilmärket.

Koda:

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

Låt nu resultatet visas i meddelandefältet i VBA.

Koda:

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

Okej, vi är klara när vi kör koden, vi borde se priset på mobilmärket ”Redmi”.

Bättre förståelse för nyckel- och artikelparametrar

Jag är säker på att det inte är lätt att förstå parametrarna för samlingsobjektet. Låt mig förklara för dig med ett enkelt exempel.

Tänk dig att du har en meny med frukt med deras namn och pris på frukten. Antag att du söker fruktpriset "Apple" med namnet på frukten.

För att söka på fruktens pris måste vi nämna fruktens namn, dvs. i samlingen VBA-språk Namnet på frukten är nyckeln och priset på frukten är "artikel".

Det är som att använda VLOOKUP- eller HLOOKUP-funktionen, baserat på uppslagsvärdet hämtar vi nödvändiga data från databasen. Här är uppslagsvärde nyckel och resultatet är artikel.

Avancerat exempel

Tänk dig att du är butikschef i en av butikerna och att du ansvarar för att hantera kundfrågorna. En sådan kundfråga är en förfrågan om produktpriset.

Du måste tillåta kunden att söka i priset på produkten med fullständig information. På samma sätt måste du visa meddelandet om inga data hittades. Nedan är exempelkoden som kommer att presentera inmatningsrutan framför användaren och de måste ange namnet på den produkt de letar efter, om produkten finns i samlingen kommer den att visa priset på den nämnda produkten eller annars kommer det att visa meddelandet ”Den produkt du söker efter existerar inte”.

Koda:

Sub Collection_Example2 () Dim ItemsCol Som Collection Dim ColResult Som stränguppsättning 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 Ange fruktnamnet ") Om ItemsCol (ColResult)" "Då MsgBox" Fruktpriset "& ColResult &" är: "& ItemsCol (ColResult) Annars MsgBox" Priset för den frukt du letar efter finns inte i samlingen "End If End Sub