Vba: rijen verwijderen op basis van celwaarde


U kunt de volgende syntaxis in VBA gebruiken om rijen te verwijderen op basis van een celwaarde:

 Sub DeleteRowsByValue()

    Dim ws As Worksheet
    Set ws = ActiveSheet
  
    'clear existing filters
    On Error Resume Next
    ws.ShowAllData
    On Error GoTo 0
    
    'filter range where column 2 in range is equal to "East"
    ws.Range(" A1:C10 ").AutoFilter Field:=2, Criteria1:=" East "
  
    'delete rows that are visible
    Application.DisplayAlerts = False
    ws.Range(" A2:C10 ").SpecialCells(xlCellTypeVisible).Delete
    Application.DisplayAlerts = True
  
    'remove filter
    On Error Resume Next
    ws.ShowAllData
    On Error GoTo 0
  
End Sub

Deze specifieke macro verwijdert alle rijen in het bereik A1:C10 waarbij de waarde van kolom B gelijk is aan „Is“.

Deze macro gebruikt de volgende stappen:

  • Pas een filter toe op A1:C10 om alleen rijen weer te geven waarvan de waarde in kolom B ‚Is‘ is.
  • Verwijder vervolgens alle zichtbare cellen.
  • Verwijder vervolgens het filter.

Dit heeft tot gevolg dat alle rijen in het bereik A1:C10 worden verwijderd, waarbij de waarde in kolom B gelijk is aan „Is“.

Het volgende voorbeeld laat zien hoe u deze syntaxis in de praktijk kunt gebruiken.

Voorbeeld: gebruik VBA om rijen te verwijderen op basis van de celwaarde

Stel dat we de volgende dataset hebben met informatie over verschillende basketbalspelers:

Stel dat we elke rij uit de gegevensset willen verwijderen waarvan de conferentiekolom gelijk is aan ‚Oost‘.

We kunnen hiervoor de volgende macro maken:

 Sub DeleteRowsByValue()

    Dim ws As Worksheet
    Set ws = ActiveSheet
  
    'clear existing filters
    On Error Resume Next
    ws.ShowAllData
    On Error GoTo 0
    
    'filter range where column 2 in range is equal to "East"
    ws.Range(" A1:C10 ").AutoFilter Field:=2, Criteria1:=" East "
  
    'delete rows that are visible
    Application.DisplayAlerts = False
    ws.Range(" A2:C10 ").SpecialCells(xlCellTypeVisible).Delete
    Application.DisplayAlerts = True
  
    'remove filter
    On Error Resume Next
    ws.ShowAllData
    On Error GoTo 0
  
End Sub

Wanneer we deze macro uitvoeren, ontvangen we de volgende uitvoer:

Houd er rekening mee dat alle rijen waarin de waarde in de kolom Conferentie ‚Oost‘ was, zijn verwijderd.

Opmerking : De regel Application.DisplayAlerts=False vertelt VBA dat het proces van het verwijderen van zichtbare regels niet moet worden weergegeven, wat het proces versnelt.

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in VBA kunt uitvoeren:

VBA: voorwaardelijke opmaak op cellen toepassen
VBA: het aantal rijen binnen bereik tellen
VBA: cellen tellen met specifieke tekst

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert