Deze zelfstudie laat zien hoe u rijen verwijdert of invoegt op basis van celwaarden.
Rij verwijderen op basis van celwaarde
Dit doorloopt een bereik en verwijdert rijen als kolom A "verwijderen" zegt.
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue()'Verklaar variabelen'Dim LastRow zo lang, FirstRow zo langDim rij zo langMet ActiveSheet'Definieer eerste en laatste rijen'Eerste rij = 1LastRow = .UsedRange.Rows(.UsedRange.Rows.Count).Rij'Loop door rijen (van onder naar boven)Voor rij = laatste rij naar eerste rij Stap -1If .Range("A" & Row).Value = "delete" Dan.Bereik("A" & rij).Gehele rij.VerwijderenStop alsVolgende rijEindigt metEinde sub |
We moeten de lus beginnen met de onderste rij, omdat het verwijderen van een rij de gegevens verschuift en rijen overslaat als u van boven naar beneden loopt.
Merk ook op dat in plaats van handmatig de laatste rij in te voeren, we de laatst gebruikte rij berekenen.
Rij verwijderen - Gebaseerd op filter
In het vorige voorbeeld liepen we door de rijen en verwijderden we elke rij die aan de criteria voldoet. Als alternatief kunnen we Excel's AutoFilter gebruiken om rijen te filteren op basis van enkele criteria en vervolgens de zichtbare rijen te verwijderen:
12345678910111213141516171819202122232425 | Sub FilterAndDeleteRows()'Declareer ws variabele'Dim ws als werkbladStel ws = ActiveSheet in'Bestaande filters resetten'Bij fout Hervatten volgendews.ShowAllDataBij fout Ga naar 0'Voeg filter toews.Range("a1:d100").AutoFilter Veld:=1, Criteria1:="verwijderen"'Verwijder rijen'Application.DisplayAlerts = Falsews.Range("a1:d100").SpecialCells(xlCellTypeVisible).VerwijderenApplication.DisplayAlerts = True'Wis filter'Bij fout Hervatten volgendews.ShowAllDataBij fout Ga naar 0Einde sub |
Rij verwijderen op basis van celcriteria
Dit doorloopt een bereik en verwijdert rijen als de cel in kolom A aan bepaalde criteria voldoet (< 0):
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue()'Verklaar variabelen'Dim LastRow zo lang, FirstRow zo langDim rij zo langMet ActiveSheet'Definieer eerste en laatste rijen'Eerste rij = 1LastRow = .UsedRange.Rows(.UsedRange.Rows.Count).Rij'Loop door rijen (van onder naar boven)Voor rij = laatste rij naar eerste rij Stap -1Als .Bereik ("A" & Rij). Waarde < 0 Dan.Bereik("A" & rij).Gehele rij.VerwijderenStop alsVolgende rijEindigt metEinde sub |
VBA-programmering | Code Generator werkt voor u!
Rij verwijderen als cel leeg is
Dit doorloopt een bereik en verwijdert een rij als een cel in kolom A leeg is:
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue()'Verklaar variabelen'Dim LastRow zo lang, FirstRow zo langDim rij zo langMet ActiveSheet'Definieer eerste en laatste rijen'Eerste rij = 1LastRow = .UsedRange.Rows(.UsedRange.Rows.Count).Rij'Loop door rijen (van onder naar boven)Voor rij = laatste rij naar eerste rij Stap -1If .Range("A" & Row).Value = "" Dan.Bereik("A" & rij).Gehele rij.VerwijderenStop alsVolgende rijEindigt metEinde sub |
Lege rij verwijderen
Als alternatief, als u een rij wilt verwijderen als de hele rij leeg is (klik op de link voor een iets andere methode), kunt u deze code gebruiken:
1234567891011121314151617181920 | Sub DeleteBlankRows()'Verklaar variabelen'Dim LastRow zo lang, FirstRow zo langDim rij zo langMet ActiveSheet'Definieer eerste en laatste rijen'Eerste rij = 1LastRow = .UsedRange.Rows(.UsedRange.Rows.Count).Rij'Loop door rijen (van onder naar boven)Voor rij = laatste rij naar eerste rij Stap -1Als WorksheetFunction.CountA(.Rows(Rij)) = 0 Dan.Rijen(Rij).GeheleRij.VerwijderenStop alsVolgende rijEindigt metEinde sub |
Rij verwijderen als cel waarde bevat
Dit doorloopt een bereik en verwijdert een rij als de cel in kolom A niet leeg is:
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue()'Verklaar variabelen'Dim LastRow zo lang, FirstRow zo langDim rij zo langMet ActiveSheet'Definieer eerste en laatste rijen'Eerste rij = 1LastRow = .UsedRange.Rows(.UsedRange.Rows.Count).Rij'Loop door rijen (van onder naar boven)Voor rij = laatste rij naar eerste rij Stap -1Als .Bereik ("A" & Rij). Waarde "" Dan.Bereik("A" & rij).Volledige rij.VerwijderenStop alsVolgende rijEindigt metEinde sub |
Moe van het zoeken naar voorbeelden van VBA-codes? Probeer AutoMacro!
Rij invoegen op basis van celwaarde
Dit doorloopt een bereik en voegt rijen in als een bepaalde cel in die rij "insert" zegt:
1234567891011121314151617181920 | Sub InsertRowsBasedonCellValue()'Verklaar variabelen'Dim LastRow zo lang, FirstRow zo langDim rij zo langMet ActiveSheet'Definieer eerste en laatste rijen'Eerste rij = 1LastRow = .UsedRange.Rows(.UsedRange.Rows.Count).Rij'Loop door rijen (van onder naar boven)Voor rij = laatste rij naar eerste rij Stap -1If .Range("A" & Row).Value = "insert" Dan.Bereik("A" & rij).Gehele rij.InvoegenStop alsVolgende rijEindigt metEinde sub |