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

Einen Kommentar hinzufügen

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