Vba: usuń arkusz, jeśli nazwa zawiera określony tekst
Aby usunąć każdy arkusz skoroszytu programu Excel zawierający określony tekst, możesz użyć następującej składni w języku VBA:
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
Po uruchomieniu tego konkretnego makra pojawi się pole wprowadzania, w którym możesz wprowadzić określony ciąg tekstowy.
Po naciśnięciu klawisza Enter każdy arkusz skoroszytu programu Excel zawierający ten konkretny tekst zostanie automatycznie usunięty.
Uwaga : Linia Application.DisplayAlerts=False informuje VBA, aby nie wyświetlał procesu usuwania arkuszy, co przyspiesza jego wykonanie.
Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.
Przykład: Użyj VBA, aby usunąć arkusze zawierające określony tekst
Załóżmy, że mamy następujący skoroszyt programu Excel zawierający cztery arkusze:
Załóżmy teraz, że chcemy usunąć każdy arkusz zawierający w nazwie „Zespół”.
W tym celu możemy utworzyć następujące makro:
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
Po uruchomieniu tego makra pojawia się pole wprowadzania, w którym możemy wpisać w nazwach arkuszy tekst, który chcemy wyszukać:
Gdy wpiszemy „Zespół” i naciśniemy OK , nazwy arkuszy zawierające słowo „Zespół” w dowolnym miejscu w nazwie zostaną automatycznie usunięte:
Należy pamiętać, że dwa arkusze zawierające w nazwie „Zespół” zostały usunięte.
Wszelkie arkusze niezawierające słowa „Zespół” pozostały nietknięte.
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w VBA:
VBA: Jak policzyć liczbę arkuszy w skoroszycie
VBA: Jak wyodrębnić dane z innego skoroszytu
VBA: jak wstawić wiele linii