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.