Listy VBA - The Ultimate Guide

Toto je konečný průvodce pro práci s Tabulkami / Listy v Excelu.

Ve spodní části této příručky jsme vytvořili podvodný list běžných příkazů pro práci s listy.

Listy vs. Pracovní listy

Na listy lze pomocí VBA odkazovat dvěma způsoby. První je s objektem Sheets:

1 Tabulky („List1“). Aktivujte

Druhý je s objektem pracovních listů:

1 Pracovní listy („List1“). Aktivujte

V 99% případů jsou tyto dva objekty totožné. Ve skutečnosti, pokud jste online hledali příklady kódu VBA, pravděpodobně jste viděli oba použité objekty. Zde je rozdíl:

Sbírka listů obsahuje pracovní listy a tabulky s grafy.

Pokud tedy chcete zahrnout běžné pracovní listy A tabulky s grafy, použijte Tabulky. Pokud chcete vyloučit tabulky grafů, použijte pracovní listy. Ve zbytku této příručky budeme listy a listy používat zaměnitelně.

Referenční listy

Na listy lze odkazovat několika různými způsoby:

  • ActiveSheet
  • Název záložky listu
  • Indexové číslo listu
  • List Code Name

ActiveSheet

ActiveSheet je list, který je aktuálně aktivní. Jinými slovy, pokud jste pozastavili kód a podívali se na Excel, je to list, který je viditelný. Níže uvedený příklad kódu zobrazí Messagebox s názvem ActiveSheet.

1 MsgBox ActiveSheet.Name

Název listu

Pravděpodobně jste nejvíce obeznámeni s odkazováním na listy podle názvu karty:

1 Tabulky („TabName“). Aktivujte

Indexové číslo listu

Indexové číslo listu je pozice listu v sešitu. 1 je první list. 2 je druhý list atd .:

1 Listy (1). Aktivujte

Indexové číslo listu - poslední list v sešitu

Chcete -li odkazovat na poslední list v sešitu, použijte Sheets.Count k získání posledního indexového čísla:

1 Tabulky (Sheets.Count). Aktivujte

List „Kódové jméno“

Kódový název listu je název objektu ve VBA:

1 CodeName.Activate

Referenční listy v jiných sešitech

Je také snadné odkazovat na listy v jiných sešitech. Chcete -li to provést, musíte použít objekt sešitů:

1 Sešity ("VBA_Examples.xlsm"). Pracovní listy ("List1"). Aktivovat

Důležité: Než budete moci odkazovat na jeho listy, musí být sešit otevřený.

Aktivovat vs. vybrat list

V dalším článku probereme vše o aktivaci a výběru listů. Krátká verze je tato:

Když list aktivujete, stane se z něj ActiveSheet. Toto je list, který byste viděli, kdybyste se podívali do programu Excel. Současně může být aktivován pouze jeden list.

Aktivujte list

1 Tabulky („List1“). Aktivujte

Když vyberete list, stane se také ActiveSheet. Můžete však vybrat více listů najednou. Pokud je vybráno více listů najednou, „horní“ list je ActiveSheet. ActiveSheet však můžete přepínat ve vybraných listech.

Vyberte list

1 Tabulky („List1“). Vyberte

Vyberte více listů

Pomocí pole vyberte více listů najednou:

1 Pracovní listy (pole („List2“, „List3“)). Vyberte

Pracovní list proměnná

Přiřazení listu k proměnné vám umožní odkazovat na list podle jeho názvu. To může ušetřit spoustu psaní a usnadnit čtení kódu. Existuje také mnoho dalších důvodů, proč byste chtěli použít proměnné.

Deklarace proměnné listu:

1 Dim ws jako list

Přiřadit list proměnné:

1 Set ws = Sheets ("Sheet1")

Nyní můžete v kódu odkazovat na proměnnou listu:

1 ws.Activate

Projděte všechny listy v sešitu

Proměnné listu jsou zásadní, pokud chcete procházet všechny listy v sešitu. Nejjednodušší způsob, jak to udělat, je:

12345 Dim ws jako pracovní listZa každé ws v pracovních listechMsgBox ws.nameDalší ws

Tento kód bude procházet všemi listy v sešitu a zobrazí každý název listu v okně zprávy. Smyčka přes všechny listy v sešitu je velmi užitečná při zamykání / odemykání nebo skrývání / odkrývání více listů najednou.

Ochrana pracovního listu

Ochrana sešitu

Ochrana sešitu uzamkne sešit před strukturálními změnami, jako je přidání, odstranění, přesunutí nebo skrytí listů.

Ochranu sešitu můžete zapnout pomocí VBA:

1 ActiveWorkbook.Protect Heslo: = "Heslo"

nebo deaktivujte ochranu sešitu:

1 ActiveWorkbook.UnProtect Heslo: = "Heslo"

Poznámka: Můžete také chránit / odemknout bez hesla vynecháním argumentu Heslo:

1 ActiveWorkbook.Protect

Ochrana pracovního listu

Ochrana na úrovni listu zabraňuje změnám v jednotlivých listech.

Chraňte pracovní list

1 Pracovní listy („List1“). Chraňte „Heslo“

Zrušte ochranu listu

1 Pracovní listy („List1“). Zrušte ochranu „hesla“

Při ochraně listů existuje celá řada možností (povolit změny formátování, umožnit uživateli vkládat řádky atd.) K záznamu požadovaných nastavení doporučujeme použít záznam makra.

O ochraně listu diskutujeme podrobněji zde.

Pracovní list Viditelná vlastnost

Možná už víte, že pracovní listy lze skrýt:

Ve skutečnosti existují tři nastavení viditelnosti listu: Visible, Hidden a Velmi skryté.Skryté listy může zobrazit každý běžný uživatel aplikace Excel - kliknutím pravým tlačítkem na oblast karty listu (viz výše). Listy VeryHidden lze odkrýt pouze pomocí kódu VBA nebo z editoru VBA. K skrytí / odkrytí listů použijte následující příklady kódu:

Odkrýt pracovní list

1 Pracovní listy („List1“). Visible = xlSheetVisible

Skrýt pracovní list

1 Pracovní listy („List1“). Visible = xlSheetHidden

Velmi skrýt pracovní list

1 Pracovní listy („List1“). Visible = xlSheetVeryHidden

Události na úrovni pracovního listu

Události jsou spouštěče, které mohou způsobit spuštění „Procedur událostí“. Můžete například způsobit spuštění kódu při každé změně jakékoli buňky na listu nebo při aktivaci listu.

Procedury událostí pracovního listu musí být umístěny v modulu listu:

Existuje mnoho událostí pracovního listu. Chcete-li zobrazit úplný seznam, přejděte na modul listu, z prvního rozevíracího seznamu vyberte „Pracovní list“. Poté výběrem postupu události z druhého rozevíracího seznamu jej vložte do modulu.

Pracovní list Aktivovat událost

Události aktivace listu se spustí při každém otevření listu.

123 Soukromý dílčí list_aktivovat ()Rozsah („A1“). VyberteEnd Sub

Tento kód vybere buňku A1 (resetování oblasti zobrazení v levé horní části listu) při každém otevření listu.

Událost změny pracovního listu

Události změny listu se spustí vždy, když se na listu změní hodnota buňky. Další informace najdete v našem kurzu o událostech změny pracovního listu.

Pracovní list Cheat Sheet

Níže najdete cheat list obsahující běžné příklady kódů pro práci s listy ve VBA

Podvodní listy VBA

Pracovní listy VBA Cheatsheet
PopisPříklad kódu
Referenční a aktivační listy
Název záložkyListy („Vstup“). Aktivujte
Kódové jméno VBAList 1. Aktivujte
Index poziceListy (1). Aktivujte
Vyberte List
Vyberte ListListy („Vstup“). Vyberte
Nastaveno na proměnnouDim ws jako pracovní list
Nastavit ws = ActiveSheet
Jméno / PřejmenovatActiveSheet.Name = "Nové jméno"
Další listActiveSheet.Next.Activate
Projděte všechny listyDim ws jako pracovní list
Za každé ws v pracovních listech
Msgbox ws.name
Další ws
Projděte vybrané listyDim ws As Worksheet
Pro každý ws v ActiveWindow.SelectedSheets
MsgBox ws.Name
Další ws
Získejte ActiveSheetMsgBox ActiveSheet.Name
Přidat listListy.Přidat
Přidejte list a jménoSheets.Add.Name = "Nový list"
Přidejte list s názvem z buňkySheets.Add.Name = range ("a3"). Hodnota
Přidat list za druhýmSheets.Add After: = Sheets ("Input")
Přidejte list za a názevSheets.Add (After: = Sheets ("Input")). Name = "NewSheet"
Přidejte list před a jménoSheets.Add (Before: = Sheets ("Input")). Name = "NewSheet"
Přidat list na konec sešituSheets.Add After: = Sheets (Sheets.Count)
Přidat list na začátek sešituSheets.Add (Before: = Sheets (1)). Name = "FirstSheet"
Přidat list do proměnnéDim ws As Worksheet
Nastavit ws = Sheets.Add
Kopírujte pracovní listy
Přesunout list na konec sešituTabulky ("List1"). Přesunout za: = Listy (Sheets.Count)
Do nového sešituListy („List1“). Zkopírujte
Vybrané listy do nového sešituActiveWindow.SelectedSheets.Copy
Před dalším listemListy („List1“). Kopírovat před: = Listy („List2“)
Před prvním listemListy („List1“). Kopírovat před: = Listy (1)
Po posledním listuListy ("List1"). Kopírovat po: = Listy (Sheets.Count)
Kopírovat a pojmenovatListy ("List1"). Kopírovat po: = Listy (Sheets.Count)
ActiveSheet.Name = "Poslední list"
Zkopírujte a pojmenujte z hodnoty buňkyListy ("List1"). Kopírovat po: = Listy (Sheets.Count)
ActiveSheet.Name = Rozsah ("A1"). Hodnota
Do jiného sešituListy ("List1"). Kopírovat před: = Sešity ("Example.xlsm"). Listy (1)
Skrýt / Odkrýt listy
Skrýt listListy („List1“). Viditelný = Nepravda
nebo
Listy ("List1"). Visible = xlSheetHidden
Odkrýt listListy („List1“). Viditelné = Pravda
nebo
Listy („List1“). Visible = xlSheetVisible
Velmi skrýt listListy („List1“). Visible = xlSheetVeryHidden
Smazat nebo vymazat listy
Smazat listTabulky („List1“). Smazat
Odstranit list (zpracování chyb)Při chybě Pokračovat Další
Tabulky („List1“). Smazat
Při chybě GoTo 0
Odstranit list (bez výzvy)Application.DisplayAlerts = False
Tabulky („List1“). Smazat
Application.DisplayAlerts = True
Čistý listListy („List1“). Buňky. Vymazat
Vymazat pouze obsah listuListy („List1“). Cells.ClearContents
Clear Sheet UsedRangeListy („List1“). UsedRange.Clear
Chraňte nebo nechraňte listy
Zrušit ochranu (bez hesla)Tabulky („List1“). Odemknout
Odemknout (heslo)Tabulky („List1“). Zrušte ochranu „hesla“
Chránit (bez hesla)Listy („List1“). Chraňte
Chránit (heslo)Tabulky („List1“). Chraňte „Heslo“
Chraňte, ale povolte přístup VBAListy („List1“). Protect UserInterfaceOnly: = True
Zrušte ochranu všech listůDim ws As Worksheet
Za každé ws v pracovních listech
ws.Onprotect "heslo"
Další ws
wave wave wave wave wave