Odkazování na objekt ve vašem kódu VBA je důležité, protože musíte identifikovat objekt, se kterým chcete v Excelu 2016 pracovat. Koneckonců, VBA neumí číst vaše myšlenky – zatím. Říká se, že objekt pro čtení myšlenek bude představen v Excelu 2019.
Jedním tahem můžete pracovat s celou sbírkou předmětů. Častěji však potřebujete pracovat s konkrétním objektem v kolekci (například s konkrétním listem v sešitu). Chcete-li odkazovat na jeden objekt z kolekce, vložte název objektu nebo číslo indexu do závorek za název kolekce, takto:
Pracovní listy (“List1”)
Všimněte si, že název listu je v uvozovkách. Pokud vynecháte uvozovky, Excel nebude schopen identifikovat objekt (a bude předpokládat, že se jedná o název proměnné).
Pokud je List1 prvním (nebo jediným) listem v kolekci, můžete také použít následující odkaz:
Pracovní listy (1)
V tomto případě je číslo není v uvozovkách. Sečteno a podtrženo? Pokud odkazujete na objekt pomocí jeho názvu, použijte uvozovky. Pokud odkazujete na objekt pomocí jeho indexového čísla, použijte obyčejné číslo bez uvozovek.
A co listy s grafy? List s grafem obsahuje jeden graf. Má záložku listu, ale není to list. No, jak se ukázalo, objektový model má kolekci nazvanou Charts. Tato kolekce obsahuje všechny objekty listu s grafem v sešitu (a nezahrnuje grafy vložené do listu).
A aby věci zůstaly logické, je tu další kolekce s názvem Sheets. Kolekce Listy obsahuje všechny listy (listy a listy s grafy) v sešitu. Kolekce Listy je užitečná, pokud chcete pracovat se všemi listy v sešitu a je vám jedno, zda se jedná o listy nebo listy s grafy.
Jeden list s názvem List1 je tedy členem dvou kolekcí: kolekce Worksheets a kolekce Sheets. Můžete na něj odkazovat dvěma způsoby:
Pracovní listy (“List1”)
Tabulky (“List1”)
Navigace v hierarchii
Pokud chcete pracovat s objekty aplikace Excel, jsou všechny pod objektem Application. Začněte tedy zadáním Application .
Každý další objekt v objektovém modelu aplikace Excel je pod objektem Application. K těmto objektům se dostanete pohybem dolů v hierarchii a propojením každého objektu na vaší cestě pomocí operátoru tečka (.). Chcete-li se dostat k objektu Workbook s názvem Book1.xlsx, začněte objektem Application a přejděte dolů k objektu kolekce Workbooks:
Aplikace.Sešity(“Sešit1.xlsx”)
Chcete-li přejít dále ke konkrétnímu listu, přidejte operátor tečky a otevřete objekt kolekce Worksheets:
Aplikace.Sešity(“Sešit1.xlsx”).Pracovní listy(1)
Ještě to není dost daleko? Pokud opravdu chcete získat hodnotu z buňky A1 na prvním listu sešitu s názvem Sešit1.xlsx, musíte přejít ještě jednu úroveň k objektu Range:
Aplikace.Sešity(“Sešit1.xlsx”).Sešity(1).Rozsah(“A1”).Hodnota
Když odkazujete na objekt Range tímto způsobem, nazývá se to plně kvalifikovaná reference. Excelu jste přesně řekli, jaký rozsah chcete, na kterém listu a ve kterém sešitu, a neponechali jste nic na fantazii. Představivost je dobrá u lidí, ale ne tak dobrá u počítačových programů.
Mimochodem, názvy sešitů mají také tečku, která odděluje název souboru od přípony (například Book1.xlsx). To je jen náhoda. Tečka v názvu souboru nemá vůbec nic společného s operátorem tečky.
Zjednodušení odkazů na objekty
Pokud byste museli plně kvalifikovat každý odkaz na objekt, který uděláte, váš kód by byl poměrně dlouhý a mohlo by být obtížnější jej přečíst. Naštěstí vám Excel poskytuje některé zkratky, které mohou zlepšit čitelnost (a ušetřit vám nějaké psaní). Pro začátek se vždy předpokládá objekt Application. Je jen málo případů, kdy má smysl to psát. Vynecháním odkazu na objekt Application se příklad zkrátí na
Sešity(“Sešit1.xlsx”).Sešity(1).Rozsah(”A1”).Hodnota
To je docela dobré zlepšení. Ale počkat, je toho víc. Pokud jste si jisti, že Book1.xlsx je aktivní sešit, můžete tento odkaz také vynechat. Teď jsi na tom
Pracovní listy(1).Rozsah(“A1”).Hodnota
Teď se někam dostáváš. Uhádli jste další zkratku? To je správně. Pokud víte, že první list je aktuálně aktivním listem, Excel předpokládá tento odkaz a umožňuje vám pouze psát
Rozsah(“A1”).Hodnota
Na rozdíl od toho, co si někteří lidé mohou myslet, Excel nemá objekt Cell. Buňka je prostě objekt rozsah, který se skládá z jediného prvku.
Zde popsané zkratky jsou skvělé, ale mohou být také nebezpečné. Co když si myslíte, že aktivním sešitem je pouze Book1.xlsx? Mohli byste dostat chybu, nebo hůř, mohli byste získat špatnou hodnotu a ani si neuvědomit, že je špatná. Z tohoto důvodu je často nejlepší plně kvalifikovat vaše reference objektů.
Struktura With-End With vám pomůže plně kvalifikovat vaše reference, ale také pomůže zlepšit čitelnost kódu a omezí psaní. Nejlepší z obou světů!