VBA / Excel : Usuwanie wielu arkuszy jednoczesnie

Czasem zdarza się tak iż podczas dłuższej pracy na jednym pliku (skoroszycie) Excela tworzymy wiele dodatkowych arkuszy, które nie zawsze nam są później potrzebne. Poniższe rozwiązanie pozwoli nam utrzymać porządek w skoroszycie.

Thank you for reading this post, don't forget to subscribe!

Pamiętajcie – uruchomienie kodu vba ma nieodwracalne skutki (nie można cofnąć wprowadzonych zmian poprzez np CTRL + Z) – zalecam wykonywanie wszelkich testów kodu na kopiach pliku docelowego.

Oto kod, który po uruchomieniu automatycznie usuwa wszystkie arkusze ze skoroszytu za wyjątkiem wybranych.

Sub UsunArkusze()

'rozpoczęcie pętli sprawdzającej każdy arkusz w skoroszycie
For Each Sheet In Application.Worksheets

'wyłączenie wyświetlania ostrzeżeń przed usunięciem arkusza
Application.DisplayAlerts = False

'wstawienie warunku w którym określamy jaki arkusz ma zostać pominięty w usuwaniu
'jeśli chcemy zostawić kilka arkuszy wystarczy dodać wyjątki łącząc je słowem "and" : 
'czyli If Sheet.Name <> "nazwa_arkusza" and Sheet.Name <> "nazwa_arkusza_2" Then
If Sheet.Name <> "nazwa_arkusza" Then
'usunięcie arkusza który nie jest arkuszem o nazwie: nazwa_arkusza
Sheet.Delete
' koniec instrukcji warunkowej
End If
'przejście w pętli do kolejnego akrusza
Next Sheet
'uruchomienie po zakończeniu pętli  wyświetlania ostrzeżeń
Application.DisplayAlerts = True
End Sub

Zwrócę uwagę jeszcze na jeden fakt, iż nie możemy usunąć wszystkich arkuszy ze skoroszytu. Tak więc jeśli w warunku podamy nazwę arkusza, którego nie ma w skoroszycie, zostanie wyświetlony komunikat z błędem “Run-time error ‘1004’ informujący nas o tym przypadku.