Ten samouczek pokaże, jak usuwać lub wstawiać wiersze na podstawie wartości komórek.
Usuń wiersz na podstawie wartości komórki
Spowoduje to przejście przez zakres i usunięcie wierszy, jeśli kolumna A mówi „usuń”.
1234567891011121314151617181920 | Sub UsuńRowsBasedonCellValue()„Zadeklaruj zmienne”Dim LastRow tak długo, FirstRow tak długoCiemny rząd tak długoZ ActiveSheet„Zdefiniuj pierwszy i ostatni wiersz”Pierwszy rząd = 1LastRow = .UsedRange.Rows(.UsedRange.Rows.Count).Row'Zapętlaj wiersze (od dołu do góry)Dla rzędu = Ostatni rząd do pierwszego rzędu Krok -1If .Range("A" & Row).Value = "usuń" Then.Range("A" i wiersz).Cały wiersz.UsuńZakończ, jeśliNastępny wierszKończyć zNapis końcowy |
Musimy rozpocząć pętlę od dolnego wiersza, ponieważ usunięcie wiersza spowoduje przesunięcie danych, pomijając wiersze, jeśli zapętlisz się z góry na dół.
Zauważ również, że zamiast ręcznie wpisywać ostatni wiersz, obliczamy ostatnio używany wiersz.
Usuń wiersz - na podstawie filtra
W poprzednim przykładzie zapętliliśmy wiersze, usuwając każdy wiersz spełniający kryteria. Alternatywnie możemy użyć Autofiltru Excela do filtrowania wierszy na podstawie niektórych kryteriów, a następnie usunięcia widocznych wierszy:
12345678910111213141516171819202122232425 | Sub FilterAndDeleteRows()'Zadeklaruj zmienną wsDim ws As WorksheetUstaw ws = Aktywny arkusz'Zresetuj istniejące filtryPrzy błędzie Wznów Dalejws. Pokaż wszystkie daneW przypadku błędu Przejdź do 0'Nałóż filtrws.Range("a1:d100").AutoFilter Field:=1, Criteria1:="usuń"„Usuń wiersze”Application.DisplayAlerts = Falsews.Range("a1:d100").SpecialCells(xlCellTypeVisible).UsuńApplication.DisplayAlerts = Prawda'Czysty filtrPrzy błędzie Wznów Dalejws. Pokaż wszystkie daneW przypadku błędu Przejdź do 0Napis końcowy |
Usuń wiersz na podstawie kryteriów komórki
Spowoduje to przejście przez zakres, usuwając wiersze, jeśli komórka w kolumnie A spełnia określone kryteria (< 0):
1234567891011121314151617181920 | Sub UsuńRowsBasedonCellValue()„Zadeklaruj zmienne”Dim LastRow tak długo, FirstRow tak długoCiemny rząd tak długoZ ActiveSheet„Zdefiniuj pierwszy i ostatni wiersz”Pierwszy rząd = 1LastRow = .UsedRange.Rows(.UsedRange.Rows.Count).Row'Zapętlaj wiersze (od dołu do góry)Dla rzędu = Ostatni rząd do pierwszego rzędu Krok -1Jeśli .Range("A" i wiersz).Value < 0 Wtedy.Range("A" i wiersz).Cały wiersz.UsuńZakończ, jeśliNastępny wierszKończyć zNapis końcowy |
Programowanie VBA | Generator kodu działa dla Ciebie!
Usuń wiersz, jeśli komórka jest pusta
Spowoduje to przejście przez zakres, usuwając wiersz, jeśli komórka w kolumnie A jest pusta:
1234567891011121314151617181920 | Sub UsuńRowsBasedonCellValue()„Zadeklaruj zmienne”Dim LastRow tak długo, FirstRow tak długoCiemny rząd tak długoZ ActiveSheet„Zdefiniuj pierwszy i ostatni wiersz”Pierwszy rząd = 1LastRow = .UsedRange.Rows(.UsedRange.Rows.Count).Row'Zapętlaj wiersze (od dołu do góry)Dla rzędu = Ostatni rząd do pierwszego rzędu Krok -1If .Range("A" & Row).Value = "" Then.Range("A" i wiersz).Cały wiersz.UsuńZakończ, jeśliNastępny wierszKończyć zNapis końcowy |
Usuń pusty wiersz
Alternatywnie, jeśli chcesz usunąć wiersz, jeśli cały wiersz jest pusty (kliknij link, aby uzyskać nieco inną metodę), możesz użyć tego kodu:
1234567891011121314151617181920 | Sub Usuń puste wiersze()„Zadeklaruj zmienne”Dim LastRow tak długo, FirstRow tak długoCiemny rząd tak długoZ ActiveSheet„Zdefiniuj pierwszy i ostatni wiersz”Pierwszy rząd = 1LastRow = .UsedRange.Rows(.UsedRange.Rows.Count).Row'Zapętlaj wiersze (od dołu do góry)Dla rzędu = Ostatni rząd do pierwszego rzędu Krok -1Jeśli WorksheetFunction.CountA(.Rows(Row)) = 0 Wtedy.Wiersze(wiersz).Cały wiersz.UsuńZakończ, jeśliNastępny wierszKończyć zNapis końcowy |
Usuń wiersz, jeśli komórka zawiera wartość
Spowoduje to przejście przez zakres, usuwając wiersz, jeśli komórka w kolumnie A nie jest pusta:
1234567891011121314151617181920 | Sub UsuńRowsBasedonCellValue()„Zadeklaruj zmienne”Dim LastRow tak długo, FirstRow tak długoCiemny rząd tak długoZ ActiveSheet„Zdefiniuj pierwszy i ostatni wiersz”Pierwszy rząd = 1LastRow = .UsedRange.Rows(.UsedRange.Rows.Count).Row'Zapętlaj wiersze (od dołu do góry)Dla rzędu = Ostatni rząd do pierwszego rzędu Krok -1If .Range("A" i wiersz).Value "" Wtedy.Range("A" i wiersz).Cały wiersz.UsuńZakończ, jeśliNastępny wierszKończyć zNapis końcowy |
Masz dość wyszukiwania przykładów kodu VBA? Wypróbuj Automakro!
Wstaw wiersz na podstawie wartości komórki
Spowoduje to przejście przez zakres, wstawiając wiersze, jeśli dana komórka w tym wierszu mówi „wstaw”:
1234567891011121314151617181920 | Sub InsertRowsBasedonCellValue()„Zadeklaruj zmienne”Dim LastRow tak długo, FirstRow tak długoCiemny rząd tak długoZ ActiveSheet„Zdefiniuj pierwszy i ostatni wiersz”Pierwszy rząd = 1LastRow = .UsedRange.Rows(.UsedRange.Rows.Count).Row'Zapętlaj wiersze (od dołu do góry)Dla rzędu = Ostatni rząd do pierwszego rzędu Krok -1If .Range("A" & Row).Value = "insert" Then.Range("A" i wiersz).EntireRow.InsertZakończ, jeśliNastępny wierszKończyć zNapis końcowy |