Přestože je důležité vědět, jak odkazovat na objekty, nemůžete dělat žádné užitečné programování Excel VBA pouhým odkazováním na objekt. Chcete-li dosáhnout něčeho smysluplného, musíte udělat jednu ze dvou věcí:
S doslova tisíci dostupnými vlastnostmi a metodami můžete být snadno ohromeni. Pamatujte, že už nikdy nebudete muset používat většinu dostupných vlastností a metod.
Vlastnosti objektu
Každý objekt má vlastnosti. Vlastnosti si můžete představit jako atributy, které popisují objekt. Vlastnosti objektu určují, jak vypadá, jak se chová a dokonce i to, zda je viditelný. Pomocí VBA můžete s vlastnostmi objektu dělat dvě věci:
Například objekt Range s jednou buňkou má vlastnost nazvanou Hodnota. Vlastnost Hodnota ukládá hodnotu obsaženou v buňce. Můžete napsat kód VBA pro zobrazení vlastnosti Value nebo můžete napsat kód VBA pro nastavení vlastnosti Value na konkrétní hodnotu. Následující makro používá vestavěnou funkci MsgBox VBA k vyvolání pole, které zobrazuje hodnotu v buňce A1 na List1 aktivního sešitu:
Toto okno se zprávou zobrazuje vlastnost Hodnota objektu Range.
Sub ShowValue()
Obsah = Pracovní listy(“List1”).Rozsah(“A1”).Hodnota
Obsah MsgBox
End Sub
Mimochodem, MsgBox je velmi užitečná funkce. Můžete jej použít k zobrazení výsledků, zatímco Excel spouští váš kód VBA.
Kód v předchozím příkladu zobrazuje aktuální nastavení vlastnosti Value buňky. Co když chcete změnit nastavení této vlastnosti? Následující makro změní hodnotu v buňce A1 změnou vlastnosti buňky Value:
Sub ChangeValue()
Worksheets(“Sheet1”).Rozsah(”A1”).Hodnota = 994,92
End Sub
Poté, co aplikace Excel provede tento postup, buňka A1 na List1 aktivního sešitu obsahuje hodnotu 994,92. Pokud aktivní sešit nemá list s názvem List1, výsledkem spuštění tohoto makra je chybová zpráva. VBA se pouze řídí pokyny a nemůže pracovat s listem, který neexistuje.
Každý objekt má svou vlastní sadu vlastností, i když některé vlastnosti jsou společné mnoha objektům. Například mnoho (ale ne všechny) objekty má vlastnost Visible. Většina objektů má také vlastnost Name.
Některé vlastnosti objektu jsou vlastnosti pouze pro čtení, což znamená, že váš kód může získat hodnotu vlastnosti, ale nemůže ji změnit.
Sbírka je také předmět. To znamená, že sbírka má také vlastnosti. Můžete například určit, kolik sešitů je otevřeno přístupem k vlastnosti Count kolekce sešitů. Následující postup VBA zobrazí okno se zprávou, které vám řekne, kolik sešitů je otevřených:
Sub CountBooks()
MsgBox Workbooks.Count
End Sub
Objektové metody
Kromě vlastností mají objekty metody. Metoda je akce budete provádět s objektem. Metoda může změnit vlastnosti objektu nebo přimět objekt, aby něco provedl.
Tento jednoduchý příklad používá metodu ClearContents na objektu Range k vymazání obsahu 12 buněk na aktivním listu:
Sub ClearRange()
Rozsah („A1:A12“). Vymazat obsah
End Sub
Některé metody používají jeden nebo více argumentů. Argumentem je hodnota, která dále upřesňuje akce provést. Argumenty pro metodu umístíte za metodu oddělené mezerou. Více argumentů je odděleno čárkou.
Následující příklad aktivuje List1 (v aktivním sešitu) a poté zkopíruje obsah buňky A1 do buňky B1 pomocí metody Copy objektu Range. V tomto příkladu má metoda Copy jeden argument, kterým je cílový rozsah pro operaci kopírování:
Sub CopyOne()
Worksheets(“Sheet1”).Aktivovat
Rozsah („A1“). Kopírovat rozsah („B1“)
End Sub
Všimněte si, že při odkazování na objekty Range byl vynechán odkaz na list. To lze provést bezpečně, protože byl použit příkaz k aktivaci List1. (pomocí metody Activate).
Dalším způsobem, jak zadat argument pro metodu, je použít oficiální název argumentu následovaný dvojtečkou a rovnítkem. Použití pojmenovaných argumentů je volitelné, ale často to může usnadnit pochopení vašeho kódu. Druhý příkaz v proceduře CopyOne by mohl být zapsán takto:
Rozsah(“A1”). Cíl kopírování:=Rozsah(“B1”)
Všimněte si malé výzvy při psaní příkazu. Tato výzva ukazuje oficiální název argumentu.
Během psaní VBE zobrazuje seznam argumentů.
Protože kolekce je také objekt, kolekce mají metody. Následující makro používá metodu Add pro kolekci sešitů:
Sub AddAWorkbook()
Workbooks.Add
End Sub
Jak můžete očekávat, tento příkaz vytvoří nový sešit. Jinými slovy, přidá nový sešit do kolekce Workbooks. Po provedení tohoto makra bude aktivním sešitem nový sešit.
Objektové události
Je tu ještě jedno téma, o kterém potřebujete vědět: události. Objekty reagují na různé události , ke kterým dochází. Když například pracujete v Excelu a aktivujete jiný sešit, dojde k události Aktivace sešitu. Můžete například mít makro VBA, které je navrženo tak, aby se spustilo vždy, když dojde k události Activate pro určitý objekt sešitu.
Excel podporuje mnoho událostí, ale ne všechny objekty mohou reagovat na všechny události. A některé objekty nereagují na žádné události. Jediné události, které můžete použít, jsou ty, které zpřístupnili programátoři aplikace Microsoft Excel.