Práce s objektem Sheets() ve VBA
Publikováno: 15.6.2017
-mini.png)
Výběr listu v sešitě, přidání nového listu, pojmenování listu a mazání listů v praxi.
- Sheets.Select
- Sheets.Add
- Sheets.Delete
Při programování aplikací v jazyce VBA se velmi pravděpodobně nevyhnete manipulaci s excelovskými listy. V tomto základním tutoriálu představím metody a vlastnosti pro běžné operace s nimi.
Objekt Sheets()
K manipulaci s listy se používá objekt Sheets(), ke kterému se připojují následující metody a vlastnosti.
Sheets().Select
Výběr listu se provádí pomocí příkazu Sheets().Select. Například výběr listu s názvem List2 zapíšete jako
Sub vyberListu()
Sheets("List2").Select
End Sub
Editor VBA pro psaní kódu vyvoláte kombinací kláves Alt + F11 nebo na kartě Vývojář tlačítkem Visual Basic.
Sheets().Add
Pro přidání nového listu do sešitu se používá metoda Add. Proceduru na nový list v sešitu zapíšete jako
Sub pridatList()
Sheets("List2").Select
Sheets.Add
End Sub
Příklad #1
Výše uvedena procedura přidá nový list automaticky před vybraný list. Implicitně je totiž nastavena metoda Before. Pokud chcete přidat nový list za vybraný list, je potřeba explicitně použít parametr After.
Sub pridatList()
Sheets("List2").Select
Sheets.Add After:=ActiveSheet
End Sub
Příklad #2
Pomocí parametru Count můžete stanovit počet nově přidávaných listů. Následující kód přidá 3 nové listy za vybraný list.
Sub pridatList()
Sheets("List2").Select
Sheets.Add After:=ActiveSheet, Count:=3
End Sub
Příklad #3
Další procedura vloží nový list za všechny stávající listy v sešitě.
Sub pridatList()
Sheets.Add After:=Sheets(Sheets.Count)
End Sub
Sheets().Name
K pojmenování listu slouží metoda Name.
Následující procedura vloží nový list za všechny stávající listy a pojmenuje ho jako Poslední list.
Sub pojmenovatList()
Sheets.Add after:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "Poslední list"
End Sub
Sheets().Delete
Metoda Delete se používá k mazání listů. Chcete-li například smazat list s názvem List2, napíšete následující proceduru
Sub smazatList()
Sheets("List2").Delete
End Sub
Příklad #1
Procedura odstraní více listů najednou pomocí speciální proměnné pole Array(). Proměnná pole umožňuje pracovat s více prvky současně. Pole je naplněno listy s názvy List2 a List3, které budou vymazány.
Sub smazatList()
Sheets(Array("List2", "List3")).Delete
End Sub
Příklad #2
Procedura přidá za poslední list 5 nových listů, aby poté mohl postupně se zpožděním 2 sekund odstranit jednotlivé listy kromě prvního.
Mazání listů je doprovázeno varovnou hláškou, zda si opravdu přejete list smazat. Hláška je v proceduře potlačena pomocí vlastnosti DisplayAlerts objektu Application.
Option Explicit
Sub smazatList()
deklarace proměnných
Dim i As Long, pocetlistu As Long
přidat 5 nových listů zprava
Sheets.Add after:=Sheets(Sheets.Count), Count:=5
zjištění počtu listů v sešitě
pocetlistu = Sheets.Count
For i = 1 To pocetlistu - 1
smazání listu se zpoždění 2 sekundy
Application.Wait (Now + TimeValue("00:00:02"))
Application.DisplayAlerts = False
Sheets(Sheets.Count).Delete
Application.DisplayAlerts = True
Next i
End Sub
K dosažení uživatelský zajímavého efektu je kód doplněn o časové zpoždění mazání listu pomocí vlastnosti Wait objektu Application.
