Kolekcja VBA - Jak utworzyć obiekt kolekcji w VBA?

Obiekt kolekcji VBA programu Excel

W kodowaniu VBA oprócz istniejącej kolekcji elementów w ramach jednej grupy możemy tworzyć nasze grupy kolekcji. W naszych wielu artykułach mówiliśmy o zmiennych obiektowych, aw tym samouczku szczegółowo omówimy obiekt kolekcji VBA.

Jeśli przeczytałeś nasz poprzedni artykuł „Tablice VBA”, będzie to dużo łatwiejsze do zrozumienia. Tablice służą do grupowania zmiennych pod jednym dachem; podobnie Collection służy również do przechowywania grupy zmiennych.

Kolekcje służą do przechowywania obiektów. Są znacznie bardziej elastyczne niż tablice VBA, podczas gdy tablice mają stałe limity rozmiaru, ale czytelnicy nie mają żadnego stałego limitu rozmiaru w żadnym momencie, a nawet nie wymagają ręcznej zmiany rozmiaru.

Kolekcja VBA jest bardzo podobna do „Słownika VBA”, ale słownik wymaga ustawienia zewnętrznego odniesienia do obiektu w oknie odniesienia do obiektu. W przypadku słownika VBA musimy ustawić typ odniesienia jako „Microsoft Scripting Runtime”, ale kolekcja nie wymaga żadnych dodatkowych dopasowań.

Jak utworzyć obiekt kolekcji w VBA?

Aby zacząć od kolekcji, musimy najpierw zadeklarować zmienną jako „Kolekcja”.

Kod:

Sub Collection_Example () Dim Col As Collection End Sub

Ponieważ kolekcja jest zmienną obiektową, musimy ustawić odniesienie do obiektu, tworząc nową instancję.

Kod:

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

Teraz dzięki zmiennej możemy uzyskać dostęp do wszystkich metod zbierania zmiennej „Col.”

Kod:

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

Przed użyciem tych metod musimy zadeklarować zmienną jako ciąg.

Kod:

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

Teraz użyj zmiennej „Col”, aby wybrać metodę „Dodaj”.

Kod:

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

W metodzie Add mamy określone parametry. Załóżmy, że przechowujemy nazwy marek telefonów komórkowych wraz z ich średnią ceną sprzedaży na rynku.

W pozycji Pozycja argument wprowadza cenę telefonu komórkowego.

Kod:

Sub Collection_Example () Dim Col As Collection Col = New Collection Col. Dodaj pozycję: = 15000, End Sub

Następnie w polu Argument klucz wprowadź nazwę marki telefonu komórkowego.

Kod:

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

Dla zmiennej „ColResult” zapiszemy wynik zmiennej obiektowej „Col”.

Kod:

Sub Collection_Example () Dim Col As Collection Col = New Collection Col.Dodaj pozycję: = 15000, klucz: = "Redmi" ColResult = Col (End Sub

Kiedy otworzysz nawias zmiennej „Col”, zobaczymy argument jako indeks. W przypadku tego argumentu musimy podać krytyczną wartość argumentu z metody Collection add, czyli nazwę marki mobilnej.

Kod:

Sub Collection_Example () Dim Col As Collection Col = New Collection Col.Dodaj pozycję: = 15000, klucz: = "Redmi" ColResult = Col ("Redmi") End Sub

Teraz pokażmy wynik w oknie komunikatu w VBA.

Kod:

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

OK, skończymy, gdy uruchomimy kod. Powinniśmy zobaczyć cenę marki mobilnej „Redmi”.

Lepsze zrozumienie parametrów klucza i pozycji

Jestem pewien, że nie jest łatwo zrozumieć parametry obiektu Collection. Pozwólcie, że wyjaśnię wam prosty przykład.

Wyobraź sobie, że masz menu z owocami z ich nazwą i ceną. Załóżmy, że wyszukujesz cenę owocu „Jabłko” po nazwie owocu.

To search the price of the fruit, we need to mention the name of the fruit, i.e., in collection VBA language Name of the Fruit is Key, and the price of the fruit is “Item.”

It is like applying the VLOOKUP or HLOOKUP function, based on the lookup value, and we will fetch the required data from the database. Here lookup value is Key, and the result is Item.

Advanced Example

Imagine you are a store manager in one of the retail stores, and you are responsible for managing the customer queries. One such customer query is an inquiry about the product price.

It would help if you allowed the customer to search the price of the product with complete information. Similarly, you need to show the message in case of no data found. Below is the example code which will present the input box in front of the user. They require to enter the name of the product they are looking for. If the product is there in the collection, it will show the price of the mentioned product, or else it will show the message as “The Product you are searching for doesn’t exist.”

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 Wprowadź nazwę owocu ") Jeśli ItemsCol (ColResult)" "To MsgBox" Cena owocu "& ColResult &" to: "& ItemsCol (ColResult) Else MsgBox" Cena owocu, którego szukasz, nie występuje w kolekcja „End If End Sub

Interesujące artykuły...