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:
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ínkamiStaženo 535x (14.06 kB)