Přeskočit navigaci | Přeskočit na novinky
     

Jste zde: Úvodní stránka » excel » vba-listy-sheet » Vybirat-oznacovat-listy-Excel-VBA-SELECT
Microsoft Excel logo

Vybírat (označovat) listy Excel VBA - SELECT

Videokurzy Excel

Ve spolupráci se SEDUO jsem vytvořil několik videokurzů:

Jak si vybrat pomocí VBA patřičný list? SELECT Worksheets, Sheets, Charts, kódové jméno listu a využití se SELECT.

Úvodem - Jak vybrat konkrétní list využitím VBA v Excel

Ono vybrat list využitím VBA není problém, ale pokud se člověk ponoří hlouběji zjistí, že je několik možností a některé jsou vzájemně nahraditelné, některé nezafungují, když se změní název listů, některé, když se změní pořadí listu, něco funguje jen na list grafu, něco jen na list s buňkami atd. V tomto článku vysvětlím na praktických příkladech.

Rozdíl mezi Worksheets, Sheets, Charts v Excel VBA určitě víte. kdyby ne tak, tak článek vám prozradí. ;)


Teorie - list jeho unikátní jméno

Jak se mohu na list odkazovat? Na výběr máte:

  • Jméno - co je napsáno na oušku listu
  • Pořadí - které vidíte v sešitě, protože existují i skryté listy a superskryté listy
  • Kódové jméno listu - které má list a je vidět ve VBA
VBA Excel - listy

Poznámka, pominu, že existují i listy Dialog MS Excel 5.0, Makro MS Excel 4.0 a Mezinárodní list maker, jsou z historických důvodu a přes ž let jsem je v praxi nepotkal. Potažmo lze v okně VBA vidět i list s označením ThisWorkbook o kterém se zmíním podrobněji v samostatném článku.

Vybrat viditelný list využitím SELECT

Jak vybrat, přejít na konkrétní viditelný list jehož název znám a neřeším typ listu (graf, buňky). Neřeším případné přejmenování uživatelem:

' znám název ' Sheets - pro obecný list, vyberu viditelný list s buňkami Sheets("List3").Select MsgBox ("Vybrán list List3") ' znám název ' Sheets - pro obecný list, vyberu viditelný list s grafem Sheets("Graf1").Select MsgBox ("Vybrán list typu graf s názvem Graf1")

Jak vybrat, přejít na konkrétní viditelný list jehož pozici zadám:

' znám pozici listu s grafem Sheets(1).Select MsgBox ("C") ' znám pozici listu s buňkami Sheets(2).Select MsgBox ("D")

Jak vybrat, přejít na konkretní viditelný list s buňkami (nelze list grafu):

' pro list buňkami jméno listu nebo pozice Worksheets("List3").Select MsgBox ("List s buňkami jméno, viditelný") Worksheets(3).Select MsgBox ("List s buňkami pozice´, viditelný") ' nezafunguje protože list Graf1 neobsahuje buňky, ale jde o list pro graf! ' Worksheets("Graf1").Select ' MsgBox ("List s grafem nefunkční, viditelný")

Pro výběr pouze listu typu grafu:

' pro list s grafem název nebo pozice Charts(1).Select MsgBox ("List Graf1 pozice") Charts("Graf1").Select MsgBox ("List Graf1 název") ' nezafunguje pokud se odkažete na list s buňkami ale ' pozici zvládne, pokud list s grafem bude jako třetív pořadí, ale druhý bude list s buňkami Charts(2).Select MsgBox ("Zobrazí druhý list s grafem v pořadí, pokud v sešitě je viditelný.")

Vybrat skrytý list využitím SELECT

Vybírat SELECTovat se dají jen listy, které jsou viditelné. Skryté (super skryté) listy se vybrat nedají. Pokud nebude list viditelný, tak se nezobrazí. Pozor, pokud budete mít 3 listy s grafy a 2 listy s buňkami, tak se dotaz na 4 list s buňkami nezobrazí. Excel počítá pozici viditelných listů a přeskakuje jiné (s grafem).

' 4 list není viditelný, nebo-li jsou jen 3 listy s buňkami (ten 4 může být graf) Worksheets(4).Select 'nezafunguje

Jak zobrazit list? Přes jeho jméno, případně kodové jméno (více o kapitulu níže).

Sheets("List4").Visible = True ' zobrazit přes kodové jméno, které vidíte ve VBA List5.Visible = True List5.Select ' funguje i pro superskryté listy List6.Visible = True ' nebo přes xl parametr pro vlastnost Visible List6.Visible = xlSheetVeryHidden

Tip pro skrytí / superskrytí

List5.Visible = xlSheetHidden List6.Visible = xlSheetVeryHidden ' opět je jeasné že jde se odvolávat i na jméno listu ' xlSheetVisible - pro viditelnost

Vybrat více listů využitím SELECT

Vybrat více listů, listy musí být viditelné:

' podle jména Sheets(Array("List2", "List3")).Select ' nebo pořadí Sheets(Array(2, 3)).Select ' lze využít i Worksheets, Charts ...

Všechny listy, ale musí být všechny viditelné.

ActiveWorkbook.Sheets.Select Sheets.Select Charts.Select Worksheets.Select ' přes ThisWorkbook ThisWorkbook.Sheets.Select ThisWorkbook.Worksheets.Select

Zobrazit všechny listy, nebo-li převést na viditelné.

Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets ws.Visible = True Next ws ' pak již mohu zobrazit vše

Výběr přes kódové označení listu

Kódové označení má každý list. Výhoda neztratí ho ani přejmenováním listu, ani přesunutím listu:

List4.Select ' list5 není vidět, je skrytý ' List5.Select ' nezafunguje výběr List5.Visible = True ' zobrazit List5.Select Excel VBa - kodobé označení listu

Nasetovat nastavit list

Jak nastavit "nasetovat" sešit a list:

Dim wb As Workbook Dim ws As Worksheet Set wb = ActiveWorkbook Set ws = Sheet("List1") wb.ws.Select

Nebo místo ActiveWorkbook přes ThisWorkbook

Set wb = ThisWorkbook

Problémy číslo - text - deklarace

Mějme list s názvem 2 (například měsíc únor jako číslo, ale jeho pozice/pořadí není jako druhý list). Přes proměnou se na tento list budu chtít odkázat. Pokud nebude deklarováno, číslo pochopí jako číslo a ne název.

' není deklarováno/definováno, že u proměné jde o string/text listu ' proto se vzbere v pořadí druhý list a ne s názvem 2 mesic = 2 Sheets(mesic).Select

Pokud proměnou nadeklárujete je již vše v pořádku.

Dim mesic As String ' vybere list s názvem 2 a ne druhý list v pořadí mesic = 2 Sheets(mesic).Select

samozdřejmě, pokud proměná bude v uvozovkách tak již Excel proměnou chápe jako string.

mesic = "2" Sheets(mesic).Select

Na deklarace (proměnných, ne nezávislostí) se mnohdy zapomíná a kódy fungují, jen se pak dostanete do situace (přidáte list) a najednou fungující kód vybírá jiný měsíc. Ač podle názvu se má odkazovat správně (jen přehlídnete typ).

Další informace:

Co jde s listy a v listech tvořit, jsem sepsal v samostatných článcích:

Závěr

Máte nějaký tip na označení listu, můžete zmínit v komentářích.

Článek byl aktualizován: 23.12.2018 07:45

Odměna

Ušetřil vám tento web čas, peníze? Pomohl vyřešit problém? Jste ochotni poskytnout symbolickou odměnu na další rozvoj? Vybrte si formu odměny, která vám vyhovuje.


Pavel Lasák - autor webu

Pavel Lasák

Microsoft Office (Word, Excel, Google tabulky, PowerPoint) se věnuji od roku 2000 (od 2004 na této doméně) - V roce 2017 jsem od Microsoft získal prestižní ocenění MVP (zatím jsem jediný z ČR v kategorií Excel). Své vědomosti a zkušenosti dávám k dispozici i on-line ve videích pro SEDUO. Ve firmách školím a konzultuji, učím na MUNI. Tento web již tvořím přes 15 let. Zdarma je zde přes 1.000 návodu, tipů a triků, včetně přes 250 různých šablon, sešitů.

   Pavel Lasák LinkedIn Profil    Pavel Lasák Google+ Profil    Pavel Lasák facebook Profil    Pavel Lasák twitter Profil


Komentáře zatím nejsou

Můžete být prvními co zanechají smysluplný komentář.







Sdílejte

Pomohl Vám návod?
Sdílejte na Facebooku, G+
LinkedIn...

Nové články


Reklama


TOPlist Licence Creative Commons webarchiv rss XML

Stránky o MS Office (Excel) produktu společnosti Microsoft. Neslouží jako technická podpora.
| Email na autora: pavel.lasak@gmail.com | Copyright © : Pavel Lasák 2004 - 2019 | 1128

Tento web zatím neprošel jazykovou korekturou. Beta verze redakčního systému.