Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Lekce 2 - Klasické Hello a úvod do OOP pro makra

V minulé lekci, Úvod do tvorby maker pro Microsoft Office, jsme si udělali úvod do maker a vytvořili si jednoduché makro formátující text pro Microsoft Word a Excel. V dnešním tutoriálu se budeme věnovat objektům.

Spusťme si Visual Basic, vložme modul volbou Insert -> Module a můžeme začít programovat.

MsgBox

Zadání: Zobrazte text "Hello" v dialogovém okně.

Napíšeme Sub pozdrav a stiskneme Enter. Visual Basic sám doplní prázdné závorky a ukončení makra. Mezi tyto řádky budeme psát samotné tělo makra.

Za ' se píší komentáře, kde bývá popis kódu. Funkčnost makra neovlivňují, ale umožňují se v kódu lépe orientovat, obzvláště pokud se k němu vracíme po delší době.

Příkaz MsgBox zobrazí dialogové okno s textem (řetězcem) uvedeným v "":

Sub pozdrav()
'prvni pozdraveni
MsgBox "Hello"
End Sub

Nyní uděláme v kódu záměrně chybu vymazáním písmena M a makro spustíme. Editor Visual Basic nás upozornil na chybu. Chybu tedy opravme a pokusme se makro spustit. Jenže se dozvíme, že editor je nyní v break módu a v něm nelze makro spustit. Abychom mohli makro opět spouštět, zvolíme Run -> Design mode a nebo Run -> Continue (F5). Obojí má svá tlačítka na liště. Nyní již bude vše bez problémů.

Zadání: Zobrazte v dialogovém okně velikost písma vybrané oblasti.

Sub velikost()
'zobrazi Velikost: a velikost pisma
MsgBox "Velikost: " & Selection.Font.Size
End Sub

Textový řetězec jsme opět uvedli do "". Následuje operátor & pro spojování řetězců a za ním je část vracející velikost písma. A u ní se zastavme.

Úvod do OOP

Visual Basic podporuje objektově orientované programování (OOP). Nabízí nám velké množství hotových tříd a objektů. Pro práci s nimi se používá tečková notace. Zde vidíme objekt Selection, což nám říká, že budeme pracovat s výběrem. Za tečkou máme upřesnění, že nás zajímá z Font výběru a za další tečkou je uvedeno ještě bližší upřesnění Size. Size je vlastnost, v tomto případě je to velikost fontu písma ve vybrané oblasti. Font má spousty vlastností, s nimiž jsme se již setkali v minulém článku po nahrání makra. Ve finálním makru pak zůstaly jen vlastnosti Name, Size, Bold a Italic.

Vlastnosti mohou obecně obsahovat jen nějakou hodnotu. Např. u Size je to číslo. Tuto hodnotu lze měnit přiřazením, což je ve Visual Basicu znak =:

Selection.Font.Size = 14

Příkaz nastavil hodnotu vlastnosti Size na 14 u fontu vybrané oblasti, a tak se po spuštění makra změnila velikost písma. Obdobně je to i u dalších uvedených vlastností v minulém článku.

Třída, objekt, může mít vlastnosti a metody. Zatímco vlastnosti pouze popisují vzhled nebo stav objektu, metoda je nějaká činnost (např. vybrání, smazání, kopie do schránky a tak dále).

Toto je velmi krátký, prakticky orientovaný úvod do OOP. Zkusme si, jestli mu rozumíme.

Nejprve se podíváme ještě na vlastnost.

Zadání: Zobrazte v dialogovém okně obsah aktuální buňky.

Zajímá nás jen jedna vybraná buňka. Nám známý objekt Selection se hodí, když chceme pracovat s celou vybranou oblastí, ale přesto zkusme, co udělá. Obsah buňky je uložen ve vlastnosti Value. Použijeme tečkovou notaci:

Sub vypis()
    MsgBox Selection.Value
End Sub

Při výběru obsahujícím více než jednu buňku makro nefunguje, při výběru jedné buňky funguje. Je lepší tedy říct, že nás zajímá hodnota Value právě a jen aktivní buňky ActiveCell, a ne celé vybrané oblasti Selection. Holt když programujeme, musíme mluvit přesně a jednoznačně:

Sub vypis_funkcni()
    MsgBox ActiveCell.Value
End Sub

Zadání: Text Hello zapište do aktuálně vybrané oblasti.

Zajímá nás vybraná oblast Selection. Chceme měnit hodnotu vlastnosti Value, proto do ní přiřazujeme pomocí =. Protože chceme přiřadit řetězec "Hello", za = je "Hello":

Sub pozdraveni()
    Selection.Value = "Hello"
End Sub

A teď si vyzkoušíme pro změnu nějaké metody. Všimněte si, že se jedná o nějaké činnosti.

Zadání: Smažte obsah aktuálně vybrané oblasti.

Zajímá nás vybraná oblast Selection, a metoda Clear, která maže obsah buněk. Tečkovou notaci již používat umíme:

Sub smaz()
    Selection.Clear
End Sub

Zadání: Smažte formát aktuálně vybrané oblasti.

Zajímá nás opět vybraná oblast Selection a metoda ClearFormats:

Sub smazformat()
    Selection.ClearFormats
End Sub

Za povšimnutí stojí, že jak vlastnost či použitá metoda je vždy uvedena na konci tečkové notace a naopak na začátku je objekt (nebo i několik ve vzájemné hierarchii).

Když náhodou někde v manuálu najdete objekt s výčtem jeho vlastností a metod, nebudete mít problém si vše vyzkoušet samostatně, pokud chápete předchozí.

A možná, při programování jednoho cvičení, jste postřehli, že po napsání názvu objektu ActiveCell a tečky se zobrazila rolovací nabídka. Právě v ní jsou uvedeny vlastnosti a metody, které lze použít u objektu ActiveCell. Na místě vlastností může vystupovat i další objekt. V tom případě, po jeho zvolení či ručním dopsání a zapsání další tečky, bude zobrazena opět rolovací nabídka s výčtem dostupných vlastností a metod pro tento objekt. Zkusme si to ještě společně.

Zadání: Zobrazte v dialogovém okně velikost písma aktivní buňky.

Protože od druhého zadání se liší v těle jen tím, že vybranou oblast Selection jsme nahradili aktivní buňkou ActiveCell, co do funkčnosti není co vysvětlovat a určitě to vyřešíte bez problémů sami. Ale vnímejte při psaní rolovací nabídku a její proměny. Jak jednoduché a přátelské. Pokud umíte anglicky, tak si některé vlastnosti a metody z nabídky můžete také zkusit sami, jen tak pro radost :) A v komentáři se podělit o tu radost, a třeba i o to, co se vám povedlo vyzkoumat.

Sub velikost_pisma()
'zobrazi Velikost: a velikost pisma
    MsgBox "Velikost: " & ActiveCell.Font.Size
End Sub

Rolovací nabídka obsahuje vlastnosti a metody objektu:

Rolovací nabídka obsahuje vlastnosti a metody objektu - Makra v Microsoft Office

A jak poznáme v rolovací nabídce, jestli se jedná o vlastnost, nebo metodu? Jednoduše, před názvem je vždy ikonka. Zelená je pro metodu (např. Activate) a ta druhá pro vlastnost (např. Address, Font).

Selection je výjimečný tím, že rolovací nabídku nezobrazuje. Je to logické, protože můžeme mít vybranou buňku, list sešitu, graf. Určitě si dovedete představit, že graf má jiné vlastnosti a metody než list a než buňka. Rolovací nabídka zde tedy nedává smysl.

V příští lekci, Makra pro práci s konkrétní buňkou, řádkem či sloupcem, se naučíme pracovat s konkrétní buňkou, řádkem či sloupcem.


 

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

Staženo 535x (14.06 kB)

 

Předchozí článek
Úvod do tvorby maker pro Microsoft Office
Všechny články v sekci
Makra v Microsoft Office
Přeskočit článek
(nedoporučujeme)
Makra pro práci s konkrétní buňkou, řádkem či sloupcem
Článek pro vás napsala Lenka
Avatar
Uživatelské hodnocení:
17 hlasů
Autorka je absolventkou FI MU. Má dlouholetou pedagogickou praxi. Vyučovala maturitní obor IT, zejména Programování a Databázové systémy. Taktéž byla vývojová odborná redaktorka matematiky. Nyní se věnuje nestandardní i standardní výuce na soukromo.
Aktivity