Hoci vedieť, ako odkazovať na objekty je dôležité, nemôžete robiť žiadne užitočné programovanie Excel VBA jednoduchým odkazovaním na objekt. Ak chcete dosiahnuť niečo zmysluplné, musíte urobiť jednu z dvoch vecí:
S doslova tisíckami dostupných vlastností a metód môžete byť jednoducho ohromení. Nezabudnite, že už nikdy nebudete musieť použiť väčšinu dostupných vlastností a metód.
Vlastnosti objektu
Každý objekt má vlastnosti. Vlastnosti si môžete predstaviť ako atribúty, ktoré popisujú objekt. Vlastnosti objektu určujú, ako vyzerá, ako sa správa a dokonca či je viditeľný. Pomocou VBA môžete s vlastnosťami objektu robiť dve veci:
Napríklad objekt Range s jednou bunkou má vlastnosť s názvom Hodnota. Vlastnosť Hodnota ukladá hodnotu obsiahnutú v bunke. Môžete napísať kód VBA na zobrazenie vlastnosti Value alebo môžete napísať kód VBA, aby ste nastavili vlastnosť Value na konkrétnu hodnotu. Nasledujúce makro používa vstavanú funkciu MsgBox VBA na vyvolanie poľa, ktoré zobrazuje hodnotu v bunke A1 na Háre 1 aktívneho zošita:
Toto okno so správou zobrazuje vlastnosť Value objektu Range.
Sub ShowValue()
Obsah = Pracovné hárky(“Hárok1”).Rozsah(“A1”).Hodnota
Obsah MsgBox
End Sub
Mimochodom, MsgBox je veľmi užitočná funkcia. Môžete ho použiť na zobrazenie výsledkov, zatiaľ čo Excel spúšťa váš kód VBA.
Kód v predchádzajúcom príklade zobrazuje aktuálne nastavenie vlastnosti Value bunky. Čo ak chcete zmeniť nastavenie pre túto vlastnosť? Nasledujúce makro zmení hodnotu v bunke A1 zmenou vlastnosti bunky Value:
Sub ChangeValue()
Pracovné hárky („Hárok1“). Rozsah („A1“). Hodnota = 994,92
End Sub
Keď Excel vykoná tento postup, bunka A1 na Hárok1 aktívneho zošita obsahuje hodnotu 994,92. Ak aktívny zošit nemá hárok s názvom Hárok1, výsledkom spustenia tohto makra je chybové hlásenie. VBA sa len riadi pokynmi a nemôže fungovať s hárkom, ktorý neexistuje.
Každý objekt má svoj vlastný súbor vlastností, hoci niektoré vlastnosti sú spoločné pre mnohé objekty. Napríklad mnohé (ale nie všetky) objekty majú vlastnosť Viditeľné. Väčšina objektov má tiež vlastnosť Name.
Niektoré vlastnosti objektu sú vlastnosti len na čítanie, čo znamená, že váš kód môže získať hodnotu vlastnosti, ale nemôže ju zmeniť.
Zbierka je tiež objekt. To znamená, že aj kolekcia má vlastnosti. Môžete napríklad určiť, koľko zošitov je otvorených prístupom k vlastnosti Count kolekcie Workbooks. Nasledujúci postup VBA zobrazí okno s hlásením, ktoré vám povie, koľko zošitov je otvorených:
Sub CountBooks()
MsgBox Workbooks.Count
End Sub
Objektové metódy
Okrem vlastností majú objekty aj metódy. Metóda je akcia budete vykonávať s objektom. Metóda môže zmeniť vlastnosti objektu alebo prinútiť objekt, aby niečo urobil.
Tento jednoduchý príklad používa metódu ClearContents na objekte Range na vymazanie obsahu 12 buniek na aktívnom hárku:
Sub ClearRange()
Rozsah („A1:A12“). Vymazať obsah
End Sub
Niektoré metódy používajú jeden alebo viac argumentov. Argumentom je hodnota, ktorá ďalej upresňuje akcie vykonať. Argumenty metódy umiestnite za metódu oddelené medzerou. Viaceré argumenty sú oddelené čiarkou.
Nasledujúci príklad aktivuje Hárok1 (v aktívnom zošite) a potom skopíruje obsah bunky A1 do bunky B1 pomocou metódy Kopírovať objektu Rozsah. V tomto príklade má metóda Copy jeden argument, ktorým je cieľový rozsah pre operáciu kopírovania:
Sub CopyOne()
Pracovné hárky („Hárok1“). Aktivovať
Rozsah („A1“). Kopírovať rozsah („B1“)
End Sub
Všimnite si, že odkaz na pracovný hárok bol vynechaný, keď sa odkazovalo na objekty Range. Dá sa to urobiť bezpečne, pretože bol použitý príkaz na aktiváciu Hárok1. (pomocou metódy Aktivovať).
Ďalším spôsobom, ako zadať argument pre metódu, je použiť oficiálny názov argumentu, za ktorým nasleduje dvojbodka a znamienko rovnosti. Použitie pomenovaných argumentov je voliteľné, ale často môže váš kód ľahšie pochopiť. Druhý príkaz v procedúre CopyOne by sa dal napísať takto:
Rozsah(“A1”). Cieľ kopírovania:=Rozsah(“B1”)
Všimnite si malú výzvu počas písania príkazu. Táto výzva zobrazuje oficiálny názov argumentu.
Počas písania VBE zobrazuje zoznam argumentov.
Pretože kolekcia je tiež objekt, kolekcie majú metódy. Nasledujúce makro používa metódu Add pre kolekciu zošitov:
Sub AddAWorkbook()
Pracovné zošity.Add
End Sub
Ako môžete očakávať, toto vyhlásenie vytvára nový zošit. Inými slovami, pridá nový pracovný zošit do kolekcie Workbooks. Po vykonaní tohto makra bude aktívnym zošitom nový zošit.
Objektové udalosti
Je tu ešte jedna téma, o ktorej potrebujete vedieť: udalosti. Objekty reagujú na rôzne udalosti, ktoré sa vyskytnú. Napríklad, keď pracujete v Exceli a aktivujete iný zošit, dôjde k udalosti Aktivovať zošit. Môžete mať napríklad makro VBA, ktoré je navrhnuté tak, aby sa spustilo vždy, keď sa pre konkrétny objekt zošita vyskytne udalosť Activate.
Excel podporuje veľa udalostí, ale nie všetky objekty môžu reagovať na všetky udalosti. A niektoré objekty nereagujú na žiadne udalosti. Jediné udalosti, ktoré môžete použiť, sú tie, ktoré sprístupnili programátori programu Microsoft Excel.