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?

Tuto šablonu aplikace Excel VBA Delete Sheet Excel si můžete stáhnout zde - VBA Delete Sheet Excel Template

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

Předpokládejme, že máte mnoho listů a k odstranění konkrétního listu 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 jako 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"). Odstranit koncový díl

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 není 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 výše uvedený příklad v okamžiku, kdy odkazujeme na název listu pomocí objektu Worksheets, nedostaneme se na 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: Ze 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“.

Takto můžeme k odstranění listu použít objekt „Aktivní list“.

Poznámka: Chcete-li použít tuto metodu, musíme si být absolutně jisti, co děláme s aktivním listem a který list bude aktivním listem.

Příklad č. 4 - Odstranění více než jednoho pracovního listu

V našich výše uvedených příkladech jsme viděli, jak odstranit jeden list, ale co když máme více listů, řekněme, že chceme odstranit 10 listů.

Nemůžeme pokračovat v psaní 10 řádků kódu k odstranění listu, takže musíme použít smyčky, abychom procházeli kolekcí listů a odstranili je.

Níže uvedený kód bude procházet listy a mazat všechny listy v sešitu.

Kód:

 Sub Delete_Example2 () Dim Ws jako list pro každou Ws v ActiveWorkbooku. Pracovní listy Ws. Odstranit další 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“.