|
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.
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í. ;)
Jak se mohu na list odkazovat? Na výběr máte:
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. 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: Jak vybrat, přejít na konkrétní viditelný list jehož pozici zadám: Jak vybrat, přejít na konkretní viditelný list s buňkami (nelze list grafu): Pro výběr pouze listu typu grafu: 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). Jak zobrazit list? Přes jeho jméno, případně kodové jméno (více o kapitulu níže). Tip pro skrytí / superskrytí Vybrat více listů, listy musí být viditelné: Všechny listy, ale musí být všechny viditelné. Zobrazit všechny listy, nebo-li převést na viditelné. Kódové označení má každý list. Výhoda neztratí ho ani přejmenováním listu, ani přesunutím listu: Jak nastavit "nasetovat" sešit a list: Nebo místo ActiveWorkbook přes ThisWorkbook 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. Pokud proměnou nadeklárujete je již vše v pořádku. samozdřejmě, pokud proměná bude v uvozovkách tak již Excel proměnou chápe jako string. 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). Co jde s listy a v listech tvořit, jsem sepsal v samostatných článcích: Máte nějaký tip na označení listu, můžete zmínit v komentářích.
Článek byl aktualizován: 19.09.2020 11:07 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. 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ů.
Můžete být prvními co zanechají smysluplný komentář.Vybrat viditelný list využitím SELECT
' 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")
' znám pozici listu s grafem
Sheets(1).Select
MsgBox ("C")
' znám pozici listu s buňkami
Sheets(2).Select
MsgBox ("D")
' 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 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
' 4 list není viditelný, nebo-li jsou jen 3 listy s buňkami (ten 4 může být graf)
Worksheets(4).Select 'nezafunguje
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
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
' podle jména
Sheets(Array("List2", "List3")).Select
' nebo pořadí
Sheets(Array(2, 3)).Select
' lze využít i Worksheets, Charts ...
ActiveWorkbook.Sheets.Select
Sheets.Select
Charts.Select
Worksheets.Select
' přes ThisWorkbook
ThisWorkbook.Sheets.Select
ThisWorkbook.Worksheets.Select
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
List4.Select
' list5 není vidět, je skrytý
' List5.Select ' nezafunguje výběr
List5.Visible = True ' zobrazit
List5.Select
Nasetovat nastavit list
Dim wb As Workbook
Dim ws As Worksheet
Set wb = ActiveWorkbook
Set ws = Sheet("List1")
wb.ws.Select
Set wb = ThisWorkbook
Problémy číslo - text - deklarace
' 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
Dim mesic As String
' vybere list s názvem 2 a ne druhý list v pořadí
mesic = 2
Sheets(mesic).Select
mesic = "2"
Sheets(mesic).Select
Další informace:
Závěr
Odměna
Pavel Lasák - autor webu
Komentáře zatím nejsou
Pomohl Vám návod? Sdílejte na Facebooku, G+ |
||
LinkedIn... |
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 - 2021 |