Jak korzystać z kolekcji VBA w programie Excel

Anonim


Kolekcja to typ danych, który przechowuje obiekty magazynów, podobnie jak tablice (ale inne). Pisząc podstawowe kody VBA, musisz używać skoroszytów, arkuszy roboczych, zakresów itp. Wszystkie są zbiorami. W tym artykule poznamy kolekcje VBA.
Co to jest kolekcja w VBA?
Kolekcja to typ danych, który przechowuje obiekty podobnego typu, podobnie jak tablice.

Ale w przeciwieństwie do tablic, jego rozmiar można dynamicznie zwiększać lub zmniejszać zgodnie z wymaganiami.

Możesz dodawać, znajdować, pobierać i usuwać elementy z kolekcji.

W przeciwieństwie do tablic nie można zmieniać wartości elementów w kolekcjach. Jeśli chcesz, użyj tablic jako elementu w kolekcji.

Z kolekcją są skojarzone 4 właściwości lub metody.

 Kolekcja.Dodaj Kolekcja.Element Kolekcja.Liczba Kolekcja.Usuń 

W tym artykule zbadamy zastosowanie tych właściwości.
Jak stworzyć kolekcję w VBA?
Kolekcja jest obiektem, dlatego konieczne jest jej zadeklarowanie i zainicjowanie. Jak każdy inny obiekt w VBA, istnieją dwie metody tworzenia kolekcji w VBA.
1. Natychmiastowe tworzenie

Przyciemnij przedmioty jako nową kolekcję

W powyższej metodzie obiekt jest tworzony natychmiast. Możesz od razu zacząć korzystać z tej kolekcji zgodnie ze swoimi wymaganiami.

2. Opóźnione tworzenie

 Przyciemnij elementy jako elementy zestawu kolekcji = Nowa kolekcja 

W tej metodzie najpierw tworzymy odwołanie do kolekcji, a gdy jest to wymagane, inicjujemy za pomocą obiektu kolekcji. Korzystając z tej metody, możesz wybrać tworzenie kolekcji w oparciu o pewne kryteria.

Dodawanie elementów do kolekcji (Collection.Add)
Używamy metody Add, aby dodać nowe elementy do kolekcji.

przedmioty.Dodaj "Jabłka"

Powyższy kod doda do kolekcji ciąg „Jabłka”.

przedmioty. Dodaj 1.4

Powyższy kod doda podwójne 1.4 na koniec kolekcji.

Możemy również zdefiniować klucze do tych pozycji. Za pomocą tych kluczy można uzyskać dostęp do przedmiotów w kolekcji.

Wstawianie elementów do kolekcji przed lub za istniejącym elementem

Metoda Add dodaje nowe elementy na końcu kolekcji.

Metoda add ma cztery parametry.

Dodaj(element,[Klucz],[Przed],[Po])

Pierwszy argument jest konieczny. Jest to obiekt, który chcesz dodać do kolekcji. Pozostałe argumenty są opcjonalne. Zobaczymy zastosowania tych argumentów w tej sekcji.

Jeżeli chcemy dodać jakiś element przed lub po jakimś indeksie pertikularnym/kluczu, to używamy parametrów Before i After metody Add.

items.Add True, "b", "cnst" 'Lub items.Add True, Before:="cnst"

Oba wiersze wstawią wartość logiczną przed kluczem „cnst” w elementach kolekcji VBA.

Aby wstawić element za indeksem/elementem/kluczem pertikularnym, używamy parametru After metody Add.

'wstawianie "Mango" z kluczem "m" po kluczu "cnst" elementów.Dodaj "Mango", klucz:="m", po:="b"

Powyższa linia wstawia "Mango" z klawiszem "m" po klawiszu "b".

Notatka: Klucze przedmiotów powinny być niepowtarzalne. Żaden klucz, który już istnieje w kolekcji, nie zostanie zaakceptowany. VBA zwróci błąd, że „klucz jest już powiązany z elementem tej kolekcji”.

Możemy to wykorzystać na naszą korzyść, aby otrzymać unikalną listę z kolekcji.
Dostęp do elementów kolekcji (Collection.Item)

Istnieją dwie metody dostępu do elementów kolekcji.

  1. Nazwa Kolekcji ("indeks/klucz")
  2. CollectionName.Item("indeks/klucz")

Na przykład, aby uzyskać dostęp do członka w kolekcji rzeczy przy indeksie 1 i klawiszu „apl” mogę użyć dowolnego z poniższych kodów VBA.

Debug.Print items.Item(1) -- Debug.Print items(1) -- Debug.Print items.Item("apl") -- Debug.Print items("apl")


Jak uzyskać liczbę przedmiotów w kolekcji? (Kolekcja.Liczba)
Aby uzyskać całkowitą liczbę obiektów lub elementów w kolekcji, używamy funkcji .Count kolekcji. Metoda .Count zwraca całkowitą liczbę elementów w kolekcji.

 przedmioty. Ilość

Powyższa linia poda liczbę obiektów, które posiada kolekcja.

Jak uzyskać dostęp do wszystkich elementów kolekcji?

Jedynym sposobem uzyskania dostępu do wszystkich elementów kolekcji w VBA są pętle. Przeszukujemy każdy element kolekcji, aby uzyskać do nich dostęp. Do tego używamy pętli for. Pętla for-each jest uważana za najszybszy i najczystszy sposób uzyskiwania dostępu do obiektów kolekcji.
Zapętlanie kolekcji w VBA

Istnieje wiele sposobów na przeglądanie kolekcji w VBA. Użyjemy najbardziej eleganckich dla każdej pętli, aby przejść przez kolekcję.

Zapętlaj każdy element kolekcji, po prostu użyj tego wiersza kodu VBA.

Dla każdej pozycji W pozycjach Debug.Drukuj pozycję Następna pozycja


Usuwanie elementów z kolekcji (Collection.Remove)

Aby usunąć element z kolekcji vba, możemy użyć metody Remove. Metoda remove przyjmuje jeden argument. Może to być indeks lub klucz pozycji (jeśli jest dostępny).

items.Remove (1) 'za pomocą index -- items.Remove 1 -- items.Remove ("apl") 'za pomocą klucza -- items.Remove "apl"

Usuwanie kolekcji w VBA

Cóż, nie możesz usunąć kolekcji w vba. Możesz jednak usunąć wszystkie elementy tej kolekcji, ustawiając ją ponownie jako nową kolekcję.

Ustaw przedmioty = Nowa kolekcja

Ten wiersz kodu utworzy nową kolekcję na adresie przedmiotów. W związku z tym nasza kolekcja zostanie opróżniona.

Tablica a kolekcja w VBA

    Szyk

  1. Rozmiar tablicy jest wstępnie zdefiniowany. Rozmiar tablicy nie może być normalnie zmieniany.
  2. Tablice mogą przechowywać tylko ten sam typ danych, a typ musi być zadeklarowany jako pierwszy.
  3. Indeksowanie w tablicy zaczyna się od 0
  4. Członkowie tablicy nie mają żadnego skojarzonego klucza.
  5. Tablice są zmienne. Możesz zmienić wartości jego członków.

    Kolekcja

  1. Rozmiar kolekcji zmienia się w miarę dodawania lub usuwania elementów.
  2. Kolekcja może zawierać dowolną liczbę typów danych. Jak widzieliście w powyższych przykładach.
  3. Indeksowanie w VBA Collection rozpoczyna się od 1.
  4. Członkowie kolekcji mogą mieć przypisane klucze.
  5. Kolekcje są niezmienne. Nie można bezpośrednio zmienić wartości jego członka.

Więc tak, to są podstawy kolekcji. Istnieje wiele zalet i zastosowań kolekcji VBA w narzędziach biurowych. Wspólnie je zbadamy. Do tego czasu, jeśli masz jakiekolwiek pytania dotyczące gromadzenia lub czegokolwiek związanego z Excelem / VBA, zamieść je w sekcji komentarzy poniżej.