Občas můžete chtít odstranit všechny kromě aktivního listu v sešitu aplikace Excel. V těchto situacích můžete použít následující makro.
Jak makro funguje
Makro zde prochází listy a porovnává každý název listu s názvem aktivního listu. Pokaždé, když se makro zacyklí, odstraní všechny neodpovídající listy. Všimněte si použití vlastnosti DisplayAlerts v kroku 4. Tím účinně vypnete varování aplikace Excel, takže nemusíte potvrzovat každé odstranění.
Dílčí makro1()
'Krok 1: Deklarujte své proměnné
Dim ws As Worksheet
'Krok 2: Začněte procházet všechny pracovní listy
Pro každý ws In ThisWorkbook.Worksheets
'Krok 3: Zkontrolujte název každého listu
If ws.Name <> ThisWorkbook.ActiveSheet.Name Then
'Krok 4: Vypněte varování a odstraňte je
Application.DisplayAlerts = False
ws.Delete
Application.DisplayAlerts = True
End If
'Krok 5: Přejděte na další list
Další ws
End Sub
Makro nejprve deklaruje objekt s názvem ws. Tento krok vytvoří paměťový kontejner pro každý list, který prochází.
V kroku 2 se makro začne opakovat a sdělí Excelu, že vyhodnotí všechny listy v tomto sešitu. Mezi ThisWorkbook a ActiveWorkbook je rozdíl. Objekt ThisWorkBook odkazuje na sešit, který obsahuje kód. Objekt ActiveWorkBook odkazuje na aktuálně aktivní sešit. Často vracejí stejný objekt, ale pokud sešit s kódem není aktivním sešitem, vrátí různé objekty. V tomto případě nechcete riskovat smazání listů v jiných sešitech, proto použijete ThisWorkBook.
V kroku 3 makro jednoduše porovná název aktivního listu s listem, který je aktuálně ve smyčce.
Pokud se v kroku 4 názvy listů liší, makro list odstraní. Jak již bylo zmíněno, DisplayAlerts používáte k potlačení jakýchkoli potvrzovacích kontrol z Excelu. Pokud chcete být před smazáním listů varováni, můžete aplikaci vynechat. DisplayAlerts = False. Vynecháním příkazu DisplayAlerts zajistíte, že se zobrazí zpráva, což vám umožní ustoupit od rozhodnutí smazat listy.
V kroku 5 se makro vrátí zpět, aby získalo další list. Po vyhodnocení všech listů makro skončí.
Chcete-li zobrazit varovné zprávy, vynechejte příkaz DisplayAlerts.
Jak používat makro
Chcete-li implementovat toto makro, můžete jej zkopírovat a vložit do standardního modulu:
Aktivujte Editor jazyka Visual Basic stisknutím Alt+F11.
Klepněte pravým tlačítkem myši na název projektu/sešitu v okně projektu.
Vyberte Vložit → Modul.
Zadejte nebo vložte kód do nově vytvořeného modulu.
Když v makru použijete ThisWorkbook místo ActiveWorkbook, nemůžete makro spustit z osobního sešitu maker. Proč? Protože ThisWorkbook by odkazoval na osobní sešit maker, nikoli na sešit, na který by se makro mělo vztahovat.