Vba: blad verwijderen als de naam specifieke tekst bevat
U kunt de volgende syntaxis in VBA gebruiken om elk blad in een Excel-werkmap te verwijderen dat specifieke tekst bevat:
SubDeleteSheets ()
Dim TextToFind As String
Dim TextWildcard As String
Dim Ws As Worksheet
Dim i As Integer
'prompt user for text to search for in sheet names
TextToFind = Application.InputBox(" Delete Sheets That Contain: ", _
ThisWorkbook.ActiveSheet.Name, , , , , 2)
TextWildcard = " * " & TextToFind & " * "
Application.DisplayAlerts = False
'loop through sheets and delete each sheet that contains text
i = 0
For Each Ws In ThisWorkbook.Sheets
If Ws.Name Like TextWildcard Then
Ws.Delete
i = i + 1
End If
Next Ws
Application.DisplayAlerts = True
End Sub
Wanneer u deze specifieke macro uitvoert, verschijnt er een invoervak waarin u een specifieke tekstreeks kunt invoeren.
Zodra u op Enter drukt, wordt elk blad in de Excel-werkmap met die specifieke tekst automatisch verwijderd.
Opmerking : de regel Application.DisplayAlerts=False vertelt VBA dat het proces van het verwijderen van werkbladen niet moet worden weergegeven, wat de uitvoering ervan versnelt.
Het volgende voorbeeld laat zien hoe u deze syntaxis in de praktijk kunt gebruiken.
Voorbeeld: gebruik VBA om bladen met specifieke tekst te verwijderen
Stel dat we de volgende Excel-werkmap hebben met vier bladen:
Laten we nu zeggen dat we elk blad met ‚Team‘ in de bladnaam willen verwijderen.
We kunnen hiervoor de volgende macro maken:
SubDeleteSheets ()
Dim TextToFind As String
Dim TextWildcard As String
Dim Ws As Worksheet
Dim i As Integer
'prompt user for text to search for in sheet names
TextToFind = Application.InputBox(" Delete Sheets That Contain: ", _
ThisWorkbook.ActiveSheet.Name, , , , , 2)
TextWildcard = " * " & TextToFind & " * "
Application.DisplayAlerts = False
'loop through sheets and delete each sheet that contains text
i = 0
For Each Ws In ThisWorkbook.Sheets
If Ws.Name Like TextWildcard Then
Ws.Delete
i = i + 1
End If
Next Ws
Application.DisplayAlerts = True
End Sub
Wanneer we deze macro uitvoeren, verschijnt er een invoervak waarin we de tekst kunnen invoeren waarnaar we willen zoeken in de bladnamen:
Zodra we ‚Team‘ typen en op OK drukken, worden bladnamen die ergens in de naam ‚Team‘ bevatten automatisch verwijderd:
Merk op dat de twee bladen met „Team“ in de bladnaam zijn verwijderd.
Alle bladen waarop „Team“ niet stond, bleven onaangeroerd.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende taken in VBA kunt uitvoeren:
VBA: het aantal vellen in een werkmap tellen
VBA: gegevens uit een andere werkmap extraheren
VBA: hoe u meerdere regels invoegt