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