Odkaz na objekt vo vašom kóde VBA je dôležitý, pretože musíte identifikovať objekt, s ktorým chcete pracovať v Exceli 2016. Koniec koncov, VBA nedokáže čítať vaše myšlienky – zatiaľ. Hovorí sa, že objekt na čítanie myšlienok bude predstavený v Exceli 2019.
Jedným ťahom môžete pracovať s celou zbierkou predmetov. Častejšie však musíte pracovať s konkrétnym objektom v kolekcii (napríklad s konkrétnym pracovným hárkom v zošite). Ak chcete odkazovať na jeden objekt z kolekcie, vložte názov objektu alebo indexové číslo do zátvoriek za názov kolekcie, takto:
Pracovné listy (“Hárok1”)
Všimnite si, že názov hárku je v úvodzovkách. Ak vynecháte úvodzovky, Excel nebude schopný identifikovať objekt (a bude predpokladať, že ide o názov premennej).
Ak je Hárok1 prvým (alebo jediným) pracovným hárkom v kolekcii, môžete použiť aj nasledujúci odkaz:
Pracovné listy (1)
V tomto prípade číslo nie je v úvodzovkách. Spodná čiara? Ak odkazujete na objekt pomocou jeho názvu, použite úvodzovky. Ak odkazujete na objekt pomocou jeho indexového čísla, použite obyčajné číslo bez úvodzoviek.
A čo hárky s grafmi? Hárok s grafom obsahuje jeden graf. Má záložku listu, ale nie je to pracovný list. No, ako sa ukázalo, objektový model má kolekciu s názvom Charts. Táto kolekcia obsahuje všetky objekty hárka s grafom v zošite (a nezahŕňa grafy vložené do hárka).
A aby veci zostali logické, je tu ďalšia kolekcia s názvom Sheets. Kolekcia Sheets obsahuje všetky hárky (pracovné hárky a hárky s grafmi) v zošite. Kolekcia Sheets je užitočná, ak chcete pracovať so všetkými hárkami v zošite a je vám jedno, či sú to hárky alebo hárky s grafmi.
Takže jeden pracovný hárok s názvom Hárok1 je členom dvoch kolekcií: kolekcie Pracovné hárky a kolekcie Hárok. Môžete naň odkazovať jedným z dvoch spôsobov:
Pracovné listy (“Hárok1”)
Tabuľky („Hárok1“)
Navigácia v hierarchii
Ak chcete pracovať s objektmi programu Excel, všetky sa nachádzajú pod objektom Application. Začnite teda zadaním Application .
Každý iný objekt v objektovom modeli Excelu je pod objektom Application. K týmto objektom sa dostanete pohybom nadol v hierarchii a spojením každého objektu na vašej ceste pomocou operátora bodka (.). Ak chcete získať objekt Workbook s názvom Book1.xlsx, začnite objektom Application a prejdite nadol k objektu kolekcie Workbooks:
Application.Workbooks(“Book1.xlsx”)
Ak chcete prejsť ďalej na konkrétny pracovný hárok, pridajte bodkový operátor a prejdite na objekt kolekcie Pracovné hárky:
Application.Workbooks(“Book1.xlsx”).Worksheets(1)
Ešte nie dosť ďaleko? Ak naozaj chcete získať hodnotu z bunky A1 na prvom pracovnom hárku zošita s názvom Book1.xlsx, musíte prejsť ešte jednu úroveň k objektu Range:
Aplikácia.Pracovné zošity(“Zošit1.xlsx”).Pracovné hárky(1).Rozsah(“A1”).Hodnota
Keď odkazujete na objekt Range týmto spôsobom, nazýva sa to plne kvalifikovaný odkaz. Excelu ste presne povedali, aký rozsah chcete, na ktorom hárku a v ktorom zošite a nenechali ste nič na fantáziu. Predstavivosť je dobrá u ľudí, ale nie taká dobrá v počítačových programoch.
Mimochodom, názvy zošitov majú aj bodku na oddelenie názvu súboru od prípony (napríklad Book1.xlsx). To je len náhoda. Bodka v názve súboru nemá vôbec nič spoločné s operátorom bodky.
Zjednodušenie odkazov na objekty
Ak by ste museli plne kvalifikovať každý odkaz na objekt, ktorý urobíte, váš kód by bol dosť dlhý a mohol by byť náročnejší na čítanie. Našťastie vám Excel poskytuje niekoľko skratiek, ktoré môžu zlepšiť čitateľnosť (a ušetriť vám trochu písania). Pre začiatočníkov sa vždy predpokladá objekt Application. Existuje len niekoľko prípadov, kedy má zmysel to písať. Vynechaním odkazu na objekt Application sa príklad skráti na
Pracovné zošity(“Zošit1.xlsx”).Pracovné hárky(1).Rozsah(”A1”).Hodnota
To je celkom dobré zlepšenie. Ale počkajte, je toho viac. Ak ste si istí, že Book1.xlsx je aktívny zošit, môžete tento odkaz tiež vynechať. Teraz ste na rade
Pracovné listy(1).Rozsah(“A1”).Hodnota
Teraz sa niekam dostávaš. Uhádli ste ďalšiu skratku? To je správne. Ak viete, že prvý pracovný hárok je aktuálne aktívny pracovný hárok, Excel predpokladá tento odkaz a umožňuje vám len písať
Rozsah („A1“). Hodnota
Na rozdiel od toho, čo si niektorí ľudia môžu myslieť, Excel nemá objekt Cell. Bunka je jednoducho objekt rozsah, ktorý sa skladá z jediného prvku.
Tu popísané skratky sú skvelé, no môžu byť aj nebezpečné. Čo ak si myslíte, že aktívnym zošitom je iba Book1.xlsx? Môžete dostať chybu, alebo ešte horšie, môžete získať nesprávnu hodnotu a ani si neuvedomíte, že je nesprávna. Z tohto dôvodu je často najlepšie plne kvalifikovať referencie na objekt.
Štruktúra With-End With vám pomáha plne kvalifikovať vaše referencie, ale tiež pomáha zlepšiť čitateľnosť kódu a obmedzuje písanie. To najlepšie z oboch svetov!