Kolekcja VBA

Obiekt kolekcji Excel VBA

W kodowaniu VBA oprócz istniejącej kolekcji elementów w ramach jednej grupy możemy również tworzyć własne 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 dla Ciebie znacznie łatwiejsze do zrozumienia. Tablice służą do grupowania zmiennych pod jednym dachem, podobnie kolekcja 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ą ustalony limit rozmiaru, ale kolekcje 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 VBA Dictionary musimy ustawić typ odniesienia jako „Microsoft Scripting Runtime”, ale Collection nie wymaga żadnego z tych dodatkowych dopasowań.

Jak utworzyć obiekt kolekcji w VBA?

Aby rozpocząć zbieranie danych, najpierw musimy zadeklarować zmienną jako „Kolekcja”.

Możesz pobrać ten szablon VBA Collection Excel tutaj - szablon VBA Collection Excel

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 skorzystaniem z tych metod musimy zadeklarować zmienną jako ciąg.

Kod:

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

Teraz użyj zmiennej „Col” i wybierz 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 Kluczowy argument wprowadź nazwę marki telefonu komórkowego.

Kod:

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

Teraz 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 dla tego argumentu, musimy podać kluczową 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.Dodaj element: = 15000, klucz: = "Redmi" ColResult = Col ("Redmi") MsgBox ColResult End Sub 

Ok, skończymy, po uruchomieniu kodu powinniśmy zobaczyć cenę mobilnej marki „Redmi”.

Lepsze zrozumienie parametrów klucza i pozycji

Jestem pewien, że nie jest łatwo zrozumieć parametry obiektu Collection. Pozwól, że wyjaśnię ci na prostym przykładzie.

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

W celu wyszukania ceny owocu należy podać nazwę owocu tj. W kolekcji język VBA Name of the Fruit is Key, a cena owocu to „Item”.

To tak, jakby zastosować funkcję WYSZUKAJ.PIONOWO lub WYSZUKAJ.PIONOWO, na podstawie wartości wyszukiwania pobieramy wymagane dane z bazy danych. Tutaj wartością wyszukiwania jest Klucz, a wynikiem jest Element.

Przykład zaawansowany

Wyobraź sobie, że jesteś kierownikiem sklepu w jednym ze sklepów detalicznych i odpowiadasz za zarządzanie zapytaniami klientów. Jednym z takich zapytań klienta jest zapytanie o cenę produktu.

Musisz pozwolić klientowi przeszukać cenę produktu z pełnymi informacjami. Podobnie musisz wyświetlić komunikat w przypadku braku danych. Poniżej znajduje się przykładowy kod, który pokaże pole wejściowe przed użytkownikiem i będzie wymagał podania nazwy produktu, którego szuka, jeśli produkt znajduje się w kolekcji, pokaże cenę tego produktu lub będzie pokaż wiadomość jako „Produkt, którego szukasz, nie istnieje”.

Kod:

 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