Vajíčková mánie Vajíčková mánie
Od 15. do 21.4. slevy 20 až 80% v sekci C/C++. Když ne teď, tak kdy?
Vyšlehej si extra vědomosti! Až 100% bodů na prémiový obsah zdarma! Více zde

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

Unicorn College Tento obsah je dostupný zdarma v rámci projektu IT lidem.
Vydávání, hosting a aktualizace umožňují jeho sponzoři.

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

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ženo 82x (14.06 kB)

 

 

Článek pro vás napsala Lenka
Avatar
Jak se ti líbí článek?
1 hlasů
Autorka je absolventkou FI MU. Má dlouholetou pedagogickou praxi. Vyučovala maturitní obor IT, zejména Programování a Databázové systémy.
Předchozí článek
Úvod do tvorby maker pro Microsoft Office
Všechny články v sekci
Makra v Microsoft Office
Miniatura
Následující článek
Makra pro práci s konkrétní buňkou, řádkem či sloupcem
Aktivity (4)

 

 

Komentáře

Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zatím nikdo nevložil komentář - buď první!