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