VBA Odstranit list - Jak odstranit list pomocí kódu VBA?

Excel VBA Odstranit list

Chcete-li odstranit list ve VBA, použijeme metodu Odstranit list. Chcete-li nejprve použít tuto metodu, musíme určit, který list odstraňujeme voláním názvu listu. Máme dvě metody, jak udělat totéž, nejprve napíšeme přímo sheet1.delete a druhou metodou jsou sheets (sheet1) .delete.

Následuje tedy syntaxe.

Pracovní listy („Název pracovního listu“). Smazat

NEBO

Tabulky („Název listu“). Smazat

Nejprve tedy musíme zadat název listu pomocí listu nebo objektu listu , poté můžeme použít metodu „Odstranit“ .

Jak odstranit listy aplikace Excel pomocí kódu VBA?

Příklad č. 1 - Odstraňte list pomocí jeho názvu

Předpokládejme, že máte mnoho listů. Chcete-li odstranit konkrétní list, musíme tento list uvést podle názvu. Například mám 3 různé listy s názvem „Prodej 2016“, „Prodej 2017“ a „Prodej 2018“.

Pokud chci odstranit list s názvem „ Prodej 2017 “, musím zmínit název listu, jak je uvedeno níže.

Kód:

Sub Delete_Example1 () Worksheets ("sheets 2017"). End Sub

Problém s přímým uvedením názvu listu nedostaneme seznam IntelliSense VBA. Metodu každopádně zmíňte jako „ Odstranit“.

Kód:

Sub Delete_Example1 () Worksheets ("sheets 2017"). Delete End Sub

Tímto způsobem odstraníte list s názvem „ Prodej 2017 “.

Chyba při mazání listu: Pokud se pokusíme odstranit list, který neexistuje, nebo pokud nesprávně uvedeme název listu, zobrazí se nám chyba VBA jako „Dolní index mimo rozsah“.

Ve výše uvedeném se mi zobrazila chyba „Dolní index mimo rozsah“, protože v mém sešitu neexistuje žádný název listu s názvem „Prodej 2017“.

Příklad č. 2 - Odstranění pracovního listu podle jeho názvu s proměnnými

Jak jsme viděli ve výše uvedeném příkladu, v okamžiku, kdy odkazujeme na název listu pomocí objektu Worksheets, nedostaneme seznam IntelliSense. Chcete-li zobrazit seznam IntelliSense, musíme použít proměnné.

Krok 1: Nejprve deklarujte proměnnou jako List .

Kód:

Sub Delete_Example2 () Dim Ws jako list End End Sub

Krok 2: Jelikož je list objektovou proměnnou, musíme proměnnou nastavit na konkrétní list pomocí slova „ SET “.

Kód:

Sub Delete_Example2 () Dim Ws As Worksheet Set Ws = Worksheets ("Sales 2017") End Sub

Proměnná „Ws“ nyní odkazuje na list s názvem „Sales 2017“.

Krok 3: Nyní pomocí proměnné „ Ws “ můžeme přistupovat ke všem seznamům IntelliSense listu.

Kód:

Sub Delete_Example2 () Dim Ws As Worksheet Set Ws = Worksheets ("Sales 2017") Ws. End Sub

Krok 4: V seznamu IntelliSense vyberte metodu „ Odstranit “.

Kód:

Sub Delete_Example2 () Dim Ws As Worksheet Set Ws = Worksheets ("Sales 2017") Ws.Delete End Sub

Stejně jako pomocí proměnných můžeme přistupovat k seznamu IntelliSense.

Příklad č. 3 - Odstranit aktivní list

Aktivní list není nic jiného než jakýkoli list, který je v tuto chvíli aktivní nebo vybraný. U této metody nemusíme uvádět název listu. Podívejte se například na níže uvedený kód VBA.

ActiveSheet. Odstranit

Právě teď je aktivní list „Prodej 2017“.

Pokud spustím kód, odstraní se aktivní list, tj. „Prodej 2017“.

Nyní vyberu „Prodej 2016“.

Nyní odstraní aktivní list, tj. „Prodej 2016“.

Like this, we can use the “Active Sheet” object to delete the worksheet.

Note: To use this method, we need to absolutely sure of what we are doing with the Active Sheet and which sheet is going to be an active sheet.

Example #4 - Delete More than One Worksheet

In our above examples, we have seen how to delete a single sheet, but what if we have multiple worksheets? Let’s say we want to delete 10 worksheets.

We cannot keep writing 10 lines of code to delete the worksheet, so we need to use loops to loop through the collection of worksheets and delete them.

The below code will loop through the worksheets and delete all the worksheets in the workbook.

Code:

Sub Delete_Example2() Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets Ws.Delete Next Ws End Sub

Výše uvedený kód vyvolá chybu, protože se pokusí odstranit všechny listy v sešitu. Abychom tomu zabránili, musíme uchovat alespoň jeden list.

Pokud chceme odstranit všechny listy kromě aktivního listu, musíme použít níže uvedený kód.

Kód:

Sub Delete_Example2 () Dim Ws jako list pro každou Ws v ActiveWorkbooku. Pracovní listy, pokud ActiveSheet.Name Ws.Name pak Ws.Delete End If Next Ws End Sub

Podobně, pokud nechceme odstranit konkrétní list, ale odstranit všechny ostatní listy, můžeme použít níže uvedený kód.

Kód:

Sub Delete_Example2 () Dim Ws jako list pro každou Ws v ActiveWorkbook.Worksheets If Ws.Name "Sales 2018" Then 'Můžete změnit název listu Ws.Delete End If Next Ws End Sub

Výše uvedený kód odstraní všechny listy kromě listu s názvem „Prodej 2018“.

Zajímavé články...