Ten samouczek nauczy Cię, jak przechodzić przez tablice w VBA.
Istnieją dwa podstawowe sposoby na pętlę przez tablice za pomocą VBA:
- Dla każdej pętli - Pętla For Each przejdzie przez każdy element tablicy.
- Na następną pętlę - For Next Loop wykona pętlę przez określoną pozycję początkową i końcową tablicy (możemy użyć funkcji UBound i LBound, aby przejść przez całą tablicę).
Dla każdego elementu w tablicy
ten Dla każdej pętli umożliwia pętlę przez każdy element tablicy.
12345678910111213141516171819 | Pętla podrzędna dla tablicy statycznej()'deklaruj tablicę wariantówDim strNames(1 do 4) As String'wypełnij tablicęstrNames(1) = "Bob"strNames(2) = "Piotr"strNames(3) = "Keith"strNames(4) = "Sam"'deklaruj wariant do przechowywania elementu tablicyPrzyciemnij element jako wariant'przeprowadź pętlę przez całą tablicęDla każdego elementu w strNames'pokaż element w oknie debugowania.Debug.Drukuj elementPętlaNapis końcowy |
Powyższa procedura przejdzie przez wszystkie nazwy w tablicy.
Na następną pętlę
Pętla For Next przejdzie przez każdy element w określonej pozycji początkowej i końcowej tablicy.
Przeprowadź pętlę przez część tablicy
Pozycję początkową i końcową pętli można określić ręcznie. Może to być odpowiednie, jeśli znasz rozmiar swojej tablicy i/lub chcesz przejść tylko przez część tablicy.
12345678910111213141516 | Pętla podrzędnaDalejDalejStatic()'deklaruj tablicę wariantówDim strNames(1 do 4) As String'wypełnij tablicęstrNames(1) = "Bob"strNames(2) = "Piotr"strNames(3) = "Keith"strNames(4) = "Sam"'deklaruj liczbę całkowitą'Dim i jako liczba całkowita'pętla od pozycji 2 do pozycji 3 tablicyDla i = 2 do 3'pokaż nazwę w bezpośrednim oknieDebug.Print strNames(i)Dalej jaNapis końcowy |
W powyższym przykładzie przeszliśmy przez pozycje 2 i 3 tablicy. Bezpośrednie okno zwróci nazwy w następujący sposób.
Przeprowadź pętlę przez całą macierz
Następnie użyjemy funkcji UBound i LBound, aby przejść przez całą tablicę. Jest to niezwykle przydatne, jeśli pozycja początkowa i końcowa tablicy może się zmienić (np. tablica dynamiczna):
123456789101112131415161718 | Pętla podrzędnaDalejDynamiczna()'deklaruj tablicę wariantówDim strNames() jako ciąg'zainicjuj tablicęReDim strNames(1 do 4)'wypełnij tablicęstrNames(1) = "Bob"strNames(2) = "Piotr"strNames(3) = "Keith"strNames(4) = "Sam"'deklaruj liczbę całkowitą'Dim i jako liczba całkowita'pętla od dolnej granicy tablicy do górnej granicy tablicy - cała tablicaFor i = LBound(strNames) To UBound(strNames)'pokaż nazwę w bezpośrednim oknieDebug.Print strNames(i)Dalej jaNapis końcowy |