Spis treści
Kiedy mamy duży zbiór danych w naszym skoroszycie Excel, czasami jest to wygodne, jeśli możemy zapętlić się przez wiersze, aby wyodrębnić konkretne wyniki, które chcemy uzyskać.Wdrożenie VBA jest najbardziej efektywną, najszybszą i najbezpieczniejszą metodą wykonywania dowolnych operacji w Excelu. W tym artykule pokażemy 11 różnych metod, jak pętla przez wiersze tabeli w programie Excel z Makro VBA .
Pobierz Workbook
Darmowy ćwiczeniowy zeszyt Excela można pobrać stąd.
Pętla przez wiersze tabeli w VBA.xlsm11 Metod w VBA, aby zapętlić wiersze tabeli w Excelu
Z tego rozdziału dowiesz się, jak pętla przez wiersze tabeli z 11 różnymi metodami, takimi jak pętla przez wiersze aż do pustej komórki, pętla przez wiersze aż do znalezienia określonej wartości, pętla przez wiersze i kolor określonej komórki itp. z VBA makro w Excelu.
Powyżej znajduje się przykładowy zestaw danych, na którym ten artykuł będzie się wzorował, aby opisać metody.
1. wbudowane VBA, aby zapętlić każdą komórkę w każdym wierszu tabeli według numeru referencyjnego komórki
Jeśli chcesz zapętlić każdą komórkę w każdym wierszu tabeli w swoim arkuszu Excel i uzyskać numer referencyjny komórki jako wartość zwrotna , a następnie wykonaj kroki omówione poniżej.
Kroki:
- Na początku naciśnij Alt + F11 na klawiaturze lub przejdź do zakładki Programista -> Visual Basic otworzyć Edytor Visual Basic .
- Następnie w wyskakującym oknie kodu, z paska menu, kliknij Insert -> Moduł .
- Następnie, kopia następujący kod i pasta w oknie kodu.
Sub LoopThroughRowsByRef() LastRow = Range("B" & Rows.Count).End(xlUp).Row FirstRow = 4 i = FirstRow FirstColumn = 2 Do Until i> LastRow LastColumn = Cells(i, Columns.Count).End(xlToLeft).Column Count = FirstColumn Do Until Count> LastColumn MsgBox "Currently iterating cell " & Chr(Count + 64) & i Count = Count + 1 Loop i = i + 1 Loop End Sub
Twój kod jest teraz gotowy do uruchomienia.
- Teraz naciśnij F5 na klawiaturze lub z paska menu wybrać Run -> Run Sub/UserForm. Możesz też po prostu kliknąć na mała ikona Play na pasku podmenu, aby uruchomić makro.
- Lub aby wizualnie zobaczyć i porównać zbiór danych i wynik, możesz uratować kodeks i wróć do arkusza zainteresowania.
- Stamtąd można kliknąć Makra od Deweloper tab, wybierz nazwę Makro, a następnie kliknij Uruchom .
Po pomyślnym wykonaniu kodu, spójrz na powyższy gif, aby zobaczyć wynik.Pojawi się okienko MsgBox pokazując ci numer referencyjny komórki dla każdej komórki z każdego wiersza z tabeli w swoim arkuszu Excel.
Objaśnienie kodu VBA
LastRow = Range("B" & Rows.Count).End(xlUp).Row
Aby uzyskać ostatni numer wiersza w tabeli, przeszukując kolumnę B.
FirstRow = 4
Ustaw wiersz numer 4, od którego zaczynają się nasze dane.
i = FirstRow
Do pętli z pierwszego rzędu.
FirstColumn = 2
Ustaw kolumnę numer 2, od której zaczynają się nasze dane.
Do Until i> LastRow LastColumn = Cells(i, Columns.Count).End(xlToLeft).Column
Rozpocznij pętlę przez wiersze, aby uzyskać ostatni numer kolumny, oceniając bieżący wiersz do ostatniego wiersza.
Count = FirstColumn Do Until Count> LastColumn
Inkrementacja zapętla kolumnę od pierwszego wiersza do ostatniego wiersza.
MsgBox "Aktualnie iterująca komórka " & Chr(Count + 64) & i Count = Count + 1 Loop i = i + 1 Loop
Ten kawałek kodu działa w celu przetworzenia, inkrementacji po każdej iteracji i wyświetlenia wyniku kodu.
Read More: Jak dodać nowy wiersz automatycznie w tabeli programu Excel
2. zaimplementuj VBA, aby zapętlić każdą komórkę w każdym wierszu według wartości
Jeśli chcesz zapętlić każdą komórkę w każdym wierszu tabeli i wyrzucić wartość znajdującą się w komórkach jako wartość zwrotną to ten rozdział pomoże Ci dowiedzieć się, jak to zrobić za pomocą VBA Excel.
Możesz to zrobić za pomocą ListObject i z DataBodyRange własność VBA Pokażemy kod makra zarówno z obiektem jak i właściwością.
2.1. z ListObject
Kroki do zapętlić każdą komórkę w każdym wierszu tabeli według wartości komórki za pomocą ListObject w VBA Excel są podane poniżej.
Kroki:
- W taki sam sposób jak poprzednio, otwórz Edytor Visual Basic od Deweloper zakładka i Wkładka a Moduł w oknie kodu.
- Następnie w oknie kodu, kopia następujący kod i pasta to.
Sub LoopThroughRowsByList() Dim iListRow As ListRow Dim iCol As Range For Each iListRow In ActiveSheet.ListObjects("TblStudents").ListRows For Each iCol In iListRow.Range MsgBox iCol.Value Next iCol Next iListRow End Sub
Twój kod jest teraz gotowy do uruchomienia.
- Po tym, Uruchom makro, tak jak pokazaliśmy w powyższym rozdziale. Wynik widać na poniższym gifie.
Będzie tam pop-up MsgBox pokazując ci wartość przenoszona przez każdą komórkę z każdego rzędu z tabeli w swoim arkuszu Excel.
Objaśnienie kodu VBA
Dim iListRow As ListRow Dim iCol As Range
Zdefiniuj zmienne.
For Each iListRow In ActiveSheet.ListObjects("TblStudents").ListRows For Each iCol In iListRow.Range MsgBox iCol.Value Next iCol Next iListRow
Ten fragment kodu najpierw rozpoczyna pętlę przez wiersze w tabeli (" TblStudents " to nasza nazwa tabeli).Następnie wpisuje kolumny dla każdego wiersza.Po tym przekazujemy wartość komórki w MsgBox.Następnie przechodzimy do następnej kolumny.Po zakończeniu iteracji przez wszystkie kolumny jednego wiersza, wtedy przechodzi do następnego wiersza i kontynuuje proces iteracji aż do ostatniego wiersza.
2.2. z właściwością DataBodyRange
Aby być bardziej szczegółowym z wyodrębnionymi danymi z tabeli, możesz użyć DataBodyRange własność ListObject . DataBodyRange właściwość rzuci ci wynik zawierający zakres z listy pomiędzy wierszem nagłówka a wierszem wstawienia.
Kroki, jak możesz zapętlić każdą komórkę w każdym wierszu tabeli według wartości komórki za pomocą DataBodyRange w VBA Excel są podane poniżej.
Kroki:
- Jak pokazano wcześniej, otwarte Edytor Visual Basic od Deweloper zakładka i Wkładka a Moduł w oknie kodu.
- Następnie, kopia następujący kod i pasta w oknie kodu.
Sub LoopThroughRowsByRange() Dim iRange As Range For Each iRange In ActiveSheet.ListObjects("TblStdnt").DataBodyRange MsgBox iRange.Value Next iRange End Sub
Twój kod jest teraz gotowy do uruchomienia.
- Później, Uruchom makro i spójrz na następujący gif, aby zobaczyć wyjście.
Będzie tam pop-up MsgBox pokazując ci wartość przenoszona przez każdą komórkę z każdego rzędu z tabeli w swoim arkuszu Excel.
Objaśnienie kodu VBA
Dim iZakres jako Zakres
Zdefiniuj zmienną.
For Each iRange In ActiveSheet.ListObjects("TblStdnt").DataBodyRange MsgBox iRange.Value Next iRange
Ten fragment kodu najpierw rozpoczyna pętlę przez wiersze w tabeli (" TblStdnt " to nasza nazwa tabeli) i zwraca zakres wartości z wyłączeniem wiersza nagłówka tabeli. Następnie przekazuje wartość zakresu w MsgBox. Następnie przechodzi do następnego wiersza, aby wyodrębnić zakres i kontynuuje proces iteracji aż do ostatniego wiersza.
3. zastosuj makro VBA do powtarzania wierszy przez łączenie kolumn w Excelu.
W tej części pokażemy, jak zapętlać wiersze w tabeli przez konkatenację kolumn z pierwszą kolumną z twojego zbioru danych w Excelu.
Na przykład, dla naszego zbioru danych, najpierw wykonamy iterację przez John w komórce B5 oraz 101 w komórce C5 poprzez ich konkatenację, a następnie iterować przez John w komórce B5 oraz 89 w komórce D5 poprzez konkatenację ich z rząd 5 .
Pokażemy Ci, jak możesz to zrobić dzięki VBA makro w Excelu.
Kroki:
- Na początku, otwórz Edytor Visual Basic od Deweloper zakładka i Wkładka a Moduł w oknie kodu.
- Po drugie, w oknie kodu, kopia następujący kod i pasta to.
Sub LoopThroughRowsByConcatenatingCol() Dim iRange As Range Dim iValue As String With ActiveSheet.ListObjects("TblConcatenate") For Each iRange In .DataBodyRange If iRange.Column = .DataBodyRange.Column Then iValue = iRange.Value Else MsgBox "Evaluating " & iValue & ": " & iRange.Value End If Next iRange End With End Sub
Twój kod jest teraz gotowy do uruchomienia.
- Po trzecie, Uruchom Spójrz na poniższy gif, aby zobaczyć wynik.
Będzie tam pop-up MsgBox pokazując ci połączona wartość komórek z pierwszej i drugiej kolumny ( John w komórce B5 z kolumny B oraz 101 w komórce C5 z kolumny C ), a następnie. połączona wartość komórek z pierwszej i trzeciej kolumny ( John w komórce B5 z kolumny B oraz 89 w komórce D5 z kolumny D ) z rząd nr 5 I ta operacja konkatenacji będzie kontynuowana aż do ostatniego wiersza tabeli.
Objaśnienie kodu VBA
Dim iRange As Range Dim iValue As String
Zdefiniuj zmienną.
With ActiveSheet.ListObjects("TblConcatenate")
Następnie kod wybiera tabelę z aktywnego arkusza (" TblConcatenate " w nazwie naszej tabeli).
For Each iRange In .DataBodyRange If iRange.Column = .DataBodyRange.Column Then iValue = iRange.Value
Następnie rozpoczyna iterację każdego wiersza z wyłączeniem nagłówka kolumny. Jeśli iteracja znajdzie dopasowanie w zakresie pomiędzy nagłówkiem kolumny a wierszami, wówczas zapisuje wartość w iValue zmienny.
Else MsgBox "Oceniając " & iValue & ": " & iRange.Value End If Next iRange End With
Jeśli powyższy warunek nie zostanie spełniony, to kod wyrzuca wartość do MsgBox i kończy wykonywanie warunku. Następnie przechodzi do zapętlenia w kolejnym zakresie i kontynuuje iterację aż do wiersza końcowego. Po osiągnięciu wiersza końcowego makro kończy wykonywanie kodu.
4. wbudowane makro do powtarzania wierszy poprzez łączenie wszystkich kolumn w tabeli w Excelu
W tym rozdziale dowiemy się, jak zsumuj wszystkie kolumny, które zawiera każdy wiersz w zbiorze danych z VBA makro w Excelu.
Kroki do wykonania tego są przedstawione poniżej.
Kroki:
- Po pierwsze, otwórz Edytor Visual Basic od Deweloper zakładka i Wkładka a Moduł w oknie kodu.
- Następnie, kopia następujący kod i pasta w oknie kodu.
Sub LoopThroughRowsByConcatenatingAllCol() Dim iObj As Excel.ListObject Dim iSheet As Excel.Worksheet Dim iRow As Excel.ListRow Dim iCol As Excel.ListColumn Dim iResult As String Set iSheet = ThisWorkbook.Worksheets("ConcatenatingAllCol") Set iObj = iSheet.ListObjects("TblConcatenateAll") For Each iRow In iObj.ListRows For Each iCol In iObj.ListColumns iResult = iResult & " " &Intersect(iRow.Range, iObj.ListColumns(iCol.Name).Range).Value Next iCol MsgBox iResult iResult = "" Next iRow End Sub
Twój kod jest teraz gotowy do uruchomienia.
- Następny, Uruchom kod makra.
Jak widać na powyższym gifie jest to, że jest pop-up MsgBox pokazując ci połączona wartość wszystkich kolumn znajdujących się w każdym wierszu z tabeli swojego arkusza Excel.
Objaśnienie kodu VBA
Dim iObj As Excel.ListObject Dim iSheet As Excel.Worksheet Dim iRow As Excel.ListRow Dim iCol As Excel.ListColumn Dim iResult As String
Zdefiniuj zmienne.
Set iSheet = ThisWorkbook.Worksheets("ConcatenatingAllCol")
Ustaw nazwę arkusza, z którym będziemy pracować (" ConcatenatingAllCol " to nazwa arkusza w skoroszycie).
Set iObj = iSheet.ListObjects("TblConcatenateAll")
Zdefiniuj nazwę tabeli, z którą będziemy pracować (" TblConcatenateAll " to nazwa tabeli w naszym zbiorze danych).
For Each iRow In iObj.ListRows
Rozpoczyna iterację przez każdy wiersz tabeli.
For Each iCol In iObj.ListColumns
Rozpoczyna iterację przez każdą kolumnę każdego wiersza tabeli.
iResult = iResult & " " & Intersect(iRow.Range, iObj.ListColumns(iCol.Name).Range).Value Next iCol MsgBox iResult iResult = "" Next iRow
Przechowuje wynik przez przecięcie wartości, które niesie każda kolumna każdego wiersza. Po przeskanowaniu wszystkich kolumn rezydujących w każdym wierszu, przekazał wynik w MsgBox. Następnie ponownie rozpoczyna pętlę w następnym wierszu i kontynuuje pętlę, aż do osiągnięcia ostatniego wiersza tabeli.
Read More: Jak posortować wiele kolumn tabeli za pomocą programu Excel VBA (2 metody)
5. Zatrzymaj iterację, jeśli wartość została znaleziona przez pętlę przez wiersze tabeli za pomocą makra VBA
Załóżmy, że chcesz zapętlaj wiersze swojej tabeli ma i zatrzymuj pętlę, gdy znajdzie określoną wartość Możesz to zrobić za pomocą prostego kodu makra.
Dowiedzmy się, jak to zrobić VBA w Excelu.
Kroki:
- Na początku, otwórz Edytor Visual Basic od Deweloper zakładka i Wkładka a Moduł w oknie kodu.
- Następnie w oknie kodu, kopia następujący kod i pasta to.
Sub LoopThroughRowsForValue() Dim iData As Range For Each iData In Range("1:15") If iData.Value = "Edge" Then MsgBox "Edge is found at " & iData.Address End If Next iData End Sub
Twój kod jest teraz gotowy do uruchomienia.
- Później, Uruchom makro.
- To będzie uruchomić pętlę i zatrzymać ją, gdy znajdzie określoną wartość (" Krawędź ") w zakresie i rzuca skutkować w MsgBox .
Jak widać na powyższym obrazku, pojawia się wyskakujący MsgBox pokazujący adres komórki, $B$10 , gdzie znaleźliśmy podaną wartość, " Krawędź " .
Objaśnienie kodu VBA
Dim iDane jako Zakres
Zdefiniuj zmienną.
For Each iData In Range("1:15") If iData.Value = "Edge" Then MsgBox "Edge is found at " & iData.Address End If Next iData
Ten kawałek kodu jest tutaj dla pętli przez wiersze od 1 do 15. Jeśli znajdzie konkretne słowo " Krawędź ", a następnie przekazuje wynik z adresem komórki, w której znajduje się słowo. Kontynuuje tę czynność, dopóki nie zakończy skanowania wszystkich danych z wierszy od 1 do 15 w poszukiwaniu słowa.
Czytaj więcej: Jak wstawić lub usunąć wiersze i kolumny z tabeli Excela
6. VBA do pętli przez każdy wiersz i kolor określonej wartości w Excelu
A co jeśli nie chcesz wrzucać do MsgBox adresu komórki z podaną wartością? Możesz chcieć pokolorować komórkę, w której znajduje się wartość szukasz.
Dowiedzmy się, jak to zrobić za pomocą VBA makro.
Kroki:
- W taki sam sposób jak poprzednio, otwórz Edytor Visual Basic od Deweloper zakładka i Wkładka a Moduł w oknie kodu.
- Następnie, kopia następujący kod i pasta w oknie kodu.
Sub LoopThroughRowsAndColor() Dim iData As Range For Each iData In Range("1:15") If iData.Value = "Edge" Then iData.Interior.ColorIndex = 8 End If Next iData End Sub.
Twój kod jest teraz gotowy do uruchomienia.
- Po tym, Uruchom makro.
- To będzie uruchomić pętlę i zatrzymać ją, gdy znajdzie określoną wartość (" Krawędź ") w zakresie i pokolorować komórkę z ColourIndex , które podałeś w kodzie.
Jak widać na powyższym zdjęciu, C komórka B10 , gdzie znaleźliśmy podaną wartość, " Krawędź " jest kolorowy po wykonaniu kodu.
Objaśnienie kodu VBA
Dim iDane jako Zakres
Zdefiniuj zmienną.
For Each iData In Range("1:15") If iData.Value = "Edge" Then iData.Interior.ColorIndex = 8 End If Next iData
Ten kawałek kodu jest tutaj dla pętli przez wiersze od 1 do 15. Jeśli znajdzie konkretne słowo " Krawędź "Następnie koloruje komórkę, w której znajduje się słowo. Kontynuuje tę czynność, dopóki nie zakończy skanowania wszystkich danych z wierszy od 1 do 15 w poszukiwaniu słowa.
Read More: Jak używać tablicy VLOOKUP na podstawie wartości komórki w Excelu
Podobne lektury
- Czy funkcja TABLE istnieje w programie Excel?
- Jak przekonwertować tabelę na listę w Excelu (3 szybkie sposoby)
- Konwersja zakresu na tabelę w Excelu (5 prostych metod)
- Użyj formuły w tabeli programu Excel skutecznie (z 4 przykładami)
- Nazwa tabeli w Excelu: Wszystko, co musisz wiedzieć
7. wdrożenie VBA do pętli przez każdy wiersz i kolor każdego nieparzystego wiersza w Excelu
Z poprzedniego rozdziału dowiedzieliśmy się, jak pokolorować komórkę, która niesie określoną wartość. W tym rozdziale dowiemy się, jak zapętlić się w każdym wierszu tabeli i pokolorować każdy nieparzysty wiersz z VBA makro w Excelu.
Kroki wykonania procesu zostały opisane poniżej.
Kroki:
- Jak pokazano wcześniej, otwarte Edytor Visual Basic od Deweloper zakładka i Wkładka a Moduł w oknie kodu.
- Następnie, kopia następujący kod i pasta w oknie kodu.
Sub LoopThroughRowsAndColorOddRows() Dim iRow As Long With Range("B4").CurrentRegion For iRow = 2 To .Rows.Count If iRow / 2 = Int(iRow / 2) Then .Rows(iRow).Interior.ColorIndex = 8 End If Next End With End Sub.
Twój kod jest teraz gotowy do uruchomienia.
- Teraz, Uruchom makro i spójrz na następujący obraz, aby zobaczyć wyjście.
Wszystkie rzędy o numerach nieparzystych są kolorowe po zapętleniu wszystkich wierszy rezydujących w tabeli arkusza.
Objaśnienie kodu VBA
Dim iRow As Long
Zdefiniuj zmienną.
With Range("B4").CurrentRegion
Zdefiniuj zakres, z którym będziemy pracować.
For iRow = 2 To .Rows.Count If iRow / 2 = Int(iRow / 2) Then .Rows(iRow).Interior.ColorIndex = 8 End If Next End With
Ta część kodu odnosi się do iteracji przez wszystkie wiersze, począwszy od następnego wiersza bieżącego wiersza, B4 Jeśli mod dzielenia numerów wierszy przez 2 jest równy zwróconemu numerowi wiersza przechowywanemu w typie integer, to kod ten koloruje wszystkie wiersze, które zostały wyodrębnione w wyniku obliczeń, za pomocą podanego w kodzie indeksu koloru. Kontynuuje on przechodzenie przez wszystkie wiersze, aż do osiągnięcia końca zakresu.
8. wdrożenie VBA do pętli przez wiersze i kolorowanie każdego parzystego wiersza w Excelu
W poprzednim rozdziale dowiedzieliśmy się, jak pokolorować każdy nieparzysty wiersz tabeli. W tym rozdziale dowiemy się, jak zapętlić się w każdym wierszu tabeli i pokolorować każdy parzysty wiersz za pomocą makra VBA w Excelu.
Poniżej omówiono kroki, które należy wykonać w celu realizacji procesu.
Kroki:
- Po pierwsze, otwórz Edytor Visual Basic od Deweloper zakładka i Wkładka a Moduł w oknie kodu.
- Następnie, kopia następujący kod i pasta w oknie kodu.
Sub LoopThroughRowsAndColorEvenRows() Dim iRow As Long With Range("B4").CurrentRegion For iRow = 3 To .Rows.Count Step 2 .Rows(iRow).Interior.ColorIndex = 8 Next End With End Sub
Twój kod jest teraz gotowy do uruchomienia.
- Następny, Uruchom makro i spójrz na poniższy obraz, aby zobaczyć wynik.
Wszystkie rzędy o parzystej liczbie są kolorowe po zapętleniu wszystkich wierszy rezydujących w tabeli arkusza.
Objaśnienie kodu VBA
Dim iRow As Long
Zdefiniuj zmienną.
With Range("B4").CurrentRegion
Zdefiniuj zakres, z którym będziemy pracować.
For iRow = 3 To .Rows.Count Step 2 .Rows(iRow).Interior.ColorIndex = 8 Next End With
Ten fragment kodu rozpoczyna iterację po trzech wierszach od bieżącego wiersza, B4 Najpierw koloruje go, następnie zwiększa liczbę wierszy o 2 i koloruje go aż do ostatniego wiersza zbioru danych.
9. zastosuj makro do przechodzenia przez wiersze aż do pustej komórki w Excelu
Jeśli chcesz, aby twój kod działał jak należy zapętlić się przez wszystkie wiersze tabeli i zatrzymać się, gdy dojdzie do pustej komórki to ten rozdział jest dla Ciebie. Możesz wykonać to zadanie zarówno za pomocą Pętla FOR i Do-Until Loop w Excelu VBA .
9.1. z pętlą FOR
Kroki do zapętlaj wiersze w tabeli aż do pustej komórki za pomocą FOR Loop w VBA Excel są podane poniżej.
Kroki:
- Na początku, otwórz Edytor Visual Basic od Deweloper zakładka i Wkładka a Moduł w oknie kodu.
- Po tym, kopia następujący kod i pasta w oknie kodu.
Sub ForLoopThroughRowsUntilBlank() Dim x As Integer Application.ScreenUpdating = False NumRows = Range("B4", Range("B4").End(xlDown)).Rows.Count Range("B4").Select For x = 1 To NumRows ActiveCell.Offset(1, 0).Select Next Application.ScreenUpdating = True End Sub
Twój kod jest teraz gotowy do uruchomienia.
- Następnie, Uruchom makra, a wynik jest pokazany na poniższym gifie.
Po uruchomieniu makra rozpoczął pętlę przez wszystkie wiersze w tabeli, a gdy dotarł do pusta komórka, komórka B8 , to przerwał iterację .
Objaśnienie kodu VBA
Dim x As Integer
Zdefiniuj zmienną.
Application.ScreenUpdating = False
Wyłączenie zdarzenia aktualizacji ekranu.
NumRows = Range("B4", Range("B4").End(xlDown)).Rows.Count
Przechowuj wszystkie wiersze począwszy od Komórka B4 aż do ostatniego.
Range("B4").Select
Wybierz Komórka B4 .
For x = 1 To NumRows ActiveCell.Offset(1, 0).Select Next
Ten fragment kodu rozpoczyna pętlę przez wszystkie wiersze. Kiedy znajdzie pustą komórkę w wierszu, zaznacza ją i kontynuuje skanowanie wierszy aż do końca.
Application.ScreenUpdating = True
Włączenie zdarzenia aktualizacji ekranu.
9.2. z pętlą Do-Until
Kroki do zapętlaj wiersze aż do pustej komórki z pętlą Do-Until w VBA podano poniżej.
Kroki:
- Po pierwsze, otwórz Edytor Visual Basic od Deweloper zakładka i Wkładka a Moduł w oknie kodu.
- Następnie, kopia następujący kod i pasta w oknie kodu.
Sub DoUntilLoopThroughRowsUntilBlank() Range("B4").Select Do Until IsEmpty(ActiveCell) ActiveCell.Offset(1, 0).Select Loop End Sub
Twój kod jest teraz gotowy do uruchomienia.
- Później, Uruchom Wynik jest pokazany na poniższym gifie.
Po uruchomieniu makra zaczęło się przechodzenie w pętli przez wszystkie wiersze w tabeli, a gdy dotarł do pusta komórka, komórka B8 , to przerwał iterację .
Objaśnienie kodu VBA
Range("B4").Select
Wybierz komórkę, z której będziemy pracować.
Do Until IsEmpty(ActiveCell)
Rozpoczyna i kontynuuje pętlę aż do znalezienia pustej komórki.
ActiveCell.Offset(1, 0).Select Loop
Gdy w wierszu zostanie znaleziona pusta komórka, wówczas należy ją wybrać i zatrzymać iterację.
10. Makro VBA do Iteracji przez wiersze aż do wielu pustych komórek w Excelu
W poprzednim rozdziale dowiedziałeś się, jak zatrzymać pętlę, gdy zostanie znaleziona pusta komórka. Ale co, jeśli nie chcesz zatrzymać iteracji, dopóki nie zostanie znalezionych wiele pustych komórek zamiast tylko jednej.
Kroki do Pętla przez wiersze do momentu pojawienia się wielu pustych komórek znajdują się w tabeli z VBA Excel są przedstawione poniżej.
Kroki:
- Po pierwsze, otwórz Edytor Visual Basic od Deweloper zakładka i Wkładka a Moduł w oknie kodu.
- Następnie, kopia następujący kod i pasta w oknie kodu.
Sub LoopThroughRowsUntilMultipleBlank() Range("B4").Select Do Until IsEmpty(ActiveCell) And IsEmpty(ActiveCell.Offset(1, 0)) ActiveCell.Offset(2, 0).Select Loop End Sub
Twój kod jest teraz gotowy do uruchomienia.
- Teraz, Uruchom makro i zobacz następujący gif dla wyjścia.
Po uruchomieniu makra nie zatrzymała się na pierwszej pustej komórce, komórce B8 . It stopped when it found dwie kolejne puste komórki na komórce B16 .
Objaśnienie kodu VBA
Range("B4").Select
Wybierz komórkę, z której będziemy pracować.
Do Until IsEmpty(ActiveCell) And IsEmpty(ActiveCell.Offset(1, 0))
Rozpoczyna i kontynuuje pętlę aż do znalezienia dwóch kolejnych pustych komórek.
ActiveCell.Offset(2, 0).Select Loop
Gdy zostaną znalezione dwie kolejne puste komórki, wtedy należy je wybrać i zatrzymać iterację.
11. wbudowane VBA do pętli przez wiersze przez konkatenację wszystkich kolumn aż do pustego miejsca w Excelu
W tym rozdziale dowiesz się, jak przeprowadź pętlę przez wszystkie wiersze w tabeli i połącz wszystkie kolumny, aż do pustej komórki znajduje się z VBA Excel.
Dowiedzmy się, jak to zrobić za pomocą VBA makro w Excelu.
Kroki:
- Na początku, otwórz Edytor Visual Basic od Deweloper zakładka i Wkładka a Moduł w oknie kodu.
- Następnie, kopia następujący kod i pasta w oknie kodu.
Sub ConcatenatingAllColUntilBlank() Dim iSheet As Worksheet Dim iValue As Variant Dim iResult As String Set iSheet = Sheets("ConcatenatingAllColUntilBlank") iValue = Range("B4").CurrentRegion For i = 2 To UBound(iValue, 1) iResult = "" For J = 1 To UBound(iValue, 2) iResult = IIf(iResult = "", iValue(i, J), iResult & " " & iValue(i, J)) Next J MsgBox iResult Next i End Sub
Twój kod jest teraz gotowy do uruchomienia.
- Później, Uruchom makro i zobacz następujący gif dla wyniku.
Jak widać na powyższym gifie jest to, że jest pop-up MsgBox pokazując ci połączona wartość wszystkich kolumn znajdujących się w każdym wierszu z tabeli w arkuszu Excela. Ale to zatrzymał się, gdy dotarł do pustej komórki .
Objaśnienie kodu VBA
Dim iSheet As Worksheet Dim iValue As Variant Dim iResult As String
Zdefiniuj zmienne.
Set iSheet = Sheets("ConcatenatingAllColUntilBlank")
Ustaw nazwę arkusza, z którym będziemy pracować (" ConcatenatingAllColUntilBlank " to nazwa arkusza w skoroszycie).
iValue = Range("B4").CurrentRegion
Zdefiniuj zakres, z którym będziemy pracować.
For i = 2 To UBound(iValue, 1) iResult = "" For J = 1 To UBound(iValue, 2) iResult = IIf(iResult = "", iValue(i, J), iResult & " " & iValue(i, J)) Next J MsgBox iResult Next i
Ten fragment kodu rozpoczyna pętlę z tablicą i kontynuuje ją aż do momentu zwrócenia największego indeksu tablicy i dolnego ograniczenia pierwszego wymiaru. Następnie rozpoczyna iterację wyodrębniania dolnego ograniczenia drugiego wymiaru. Po tym przekazuje wszystkie wyodrębnione wartości do obiektu iResult zmienną, konkatenując je i wrzucając wynik do MsgBox. Robi to tak długo, aż znajdzie pustą komórkę.
Wniosek
Podsumowując, ten artykuł pokazał Ci 11 skutecznych metod na to, jak pętla przez wiersze tabeli w programie Excel z Makro VBA Mam nadzieję, że ten artykuł był dla Ciebie bardzo korzystny. Zapraszam do zadawania wszelkich pytań związanych z tematem.