Vba: blatt löschen, wenn der name bestimmten text enthält


Sie können die folgende Syntax in VBA verwenden, um jedes Blatt in einer Excel-Arbeitsmappe zu löschen, das bestimmten Text enthält:

 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

Wenn Sie dieses spezielle Makro ausführen, erscheint ein Eingabefeld, in das Sie eine bestimmte Textzeichenfolge eingeben können.

Sobald Sie die Eingabetaste drücken, wird jedes Blatt in der Excel-Arbeitsmappe, das diesen bestimmten Text enthält, automatisch gelöscht.

Hinweis : Die Zeile „Application.DisplayAlerts=False“ weist VBA an, den Prozess des Löschens von Blättern nicht anzuzeigen, was seine Ausführung beschleunigt.

Das folgende Beispiel zeigt, wie diese Syntax in der Praxis verwendet wird.

Beispiel: Verwenden Sie VBA, um Blätter zu löschen, die bestimmten Text enthalten

Angenommen, wir haben die folgende Excel-Arbeitsmappe mit vier Blättern:

Nehmen wir nun an, wir möchten jedes Blatt löschen, dessen Blattname „Team“ enthält.

Dazu können wir das folgende Makro erstellen:

 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

Wenn wir dieses Makro ausführen, erscheint ein Eingabefeld, in das wir den Text eingeben können, nach dem wir in den Blattnamen suchen möchten:

Sobald wir „Team“ eingeben und auf „OK“ klicken, werden Blattnamen, die „Team“ an einer beliebigen Stelle im Namen enthalten, automatisch gelöscht:

Beachten Sie, dass die beiden Blätter mit „Team“ im Blattnamen entfernt wurden.

Alle Blätter, die nicht „Team“ enthielten, blieben unberührt.

Zusätzliche Ressourcen

In den folgenden Tutorials wird erläutert, wie Sie andere häufige Aufgaben in VBA ausführen:

VBA: So zählen Sie die Anzahl der Blätter in einer Arbeitsmappe
VBA: So extrahieren Sie Daten aus einer anderen Arbeitsmappe
VBA: So fügen Sie mehrere Zeilen ein

Einen Kommentar hinzufügen

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