Lekce 2 - Klasické Hello a úvod do OOP pre makrá
V minulej lekcii, , sme si urobili úvod do makier a vytvorili si jednoduché makro formátující text pre Microsoft Word a Excel. V dnešnom tutoriále sa budeme venovať objektom.
Spustite si Visual Basic, vložme modul voľbou Insert -> Module a môžeme začať programovať.
MsgBox
Zadanie: Zobrazte text "Hello" v dialógovom okne.
Napíšeme Sub pozdrav a stlačíme Enter. Visual
Basic sám doplní prázdne zátvorky a ukončenie makrá. Medzi tieto riadky
budeme písať samotné telo makra.
Za ' sa píšu komentáre, kde býva popis kódu. Funkčnosť
makrá neovplyvňujú, ale umožňujú sa v kóde lepšie orientovať, najmä ak
sa k nemu vraciame po dlhšej dobe.
Príkaz MsgBox zobrazí dialógové okno s textom (reťazcom)
uvedeným v "":
Sub pozdrav() 'prvni pozdraveni MsgBox "Hello" End Sub
Teraz urobíme v kóde zámerne chybu vymazaním písmená M a
makro spustíme. Editor Visual Basic nás upozornil na chybu. Chybu teda opraví
a pokúsme sa makro spustiť. Lenže sa dozvieme, že editor je teraz v break
módu a v ňom nedá makro spustiť. Aby sme mohli makro opäť spúšťať,
zvolíme Run -> Design mode a alebo Run ->
Continue (F5). Oboje má svoje tlačidlá na lište. Teraz už bude
všetko bez problémov.
Zadanie: Zobrazte v dialógovom okne veľkosť písma vybranej oblasti.
Sub velikost() 'zobrazi Velikost: a velikost pisma MsgBox "Velikost: " & Selection.Font.Size End Sub
Textový reťazec sme opäť uviedli do "". Nasleduje operátor
& pre spájanie reťazcov a za ním je časť
vracajúci veľkosť písma. A u nej sa zastavme.
Úvod do OOP
Visual Basic podporuje objektovo orientované programovanie
(OOP). Ponúka nám veľké množstvo hotových tried a objektov. Pre prácu s
nimi sa používa bodkovaný notácie. Tu vidíme objekt
Selection, čo nám hovorí, že budeme pracovať
s výberom. Za bodkou máme spresnenie, že nás zaujíma z
Font výberu a za ďalšie bodkou je uvedené
ešte bližšie upresnenie Size. Size
je vlastnosť, v tomto prípade je to veľkosť fontu písma vo vybranej
oblasti. Font má veľa vlastností, s ktorými sme sa už stretli
v minulom článku po nahraní makra. Vo finálnom makre potom zostali len
vlastnosti Name,
Size, Bold a
Italic.
Vlastnosti môžu všeobecne obsahovať len nejakú hodnotu. Napr. u
Size je to číslo. Túto hodnotu možno meniť
priradením, čo je vo Visual Basicu znak
=:
Selection.Font.Size = 14
Príkaz nastavil hodnotu vlastnosti Size na
14 u fontu vybranej oblasti, a tak sa po spustení makra zmenila
veľkosť písma. Obdobne je to aj u ďalších uvedených vlastností v minulom
článku.
Trieda, objekt, môže mať vlastnosti a metódy. Kým vlastnosti iba popisujú vzhľad alebo stav objektu, metóda je nejaká činnosť (napr. Vybranie, zmazanie, kópie do schránky a tak ďalej).
Toto je veľmi krátky, prakticky orientovaný úvod do OOP. Skúsme si, či mu rozumieme.
Najprv sa pozrieme ešte na vlastnosť.
Zadanie: Zobrazte v dialógovom okne obsah aktuálnej bunky.
Zaujíma nás len jedna vybraná bunka. Nám známy objekt
Selection sa hodí, keď chceme pracovať s celou
vybranou oblasťou, ale napriek tomu skúsme, čo urobí. Obsah bunky je
uložený vo vlastnosti Value. Použijeme
tečkové notáciu:
Sub vypis() MsgBox Selection.Value End Sub
Pri výbere obsahujúcim viac ako jednu bunku makro nefunguje, pri výbere
jednej bunky funguje. Je lepšie teda povedať, že nás zaujíma hodnota
Value práve a len aktívnej bunky
ActiveCell, a nie celej vybranej oblasti
Selection. Holt keď programujeme, musíme hovoriť presne a
jednoznačne:
Sub vypis_funkcni() MsgBox ActiveCell.Value End Sub
Zadanie: Text Hello zapíšte do aktuálne vybranej oblasti.
Zaujíma nás vybraná oblasť Selection.
Chceme meniť hodnotu vlastnosti Value, preto do
nej priraďujeme pomocou =. Pretože chceme
priradiť reťazec "Hello", za = je
"Hello":
Sub pozdraveni() Selection.Value = "Hello" End Sub
A teraz si vyskúšame pre zmenu nejaké metódy. Všimnite si, že sa jedná o nejakej činnosti.
Zadanie: Zmažte obsah aktuálne vybranej oblasti.
Zaujíma nás vybraná oblasť Selection, a
metóda Clear, ktorá maže obsah buniek.
Tečkové notáciu už používať vieme:
Sub smaz() Selection.Clear End Sub
Zadanie: Zmažte formát aktuálne vybrané oblasti.
Zaujíma nás opäť vybraná oblasť Selection
a metóda ClearFormats:
Sub smazformat() Selection.ClearFormats End Sub
Za povšimnutie stojí, že ako vlastnosť či použitá metóda je vždy uvedená na konci tečkové notácie a naopak na začiatku je objekt (alebo aj niekoľko vo vzájomnej hierarchii).
Keď náhodou niekde v manuáli nájdete objekt s výpočtom jeho vlastností a metód, nebudete mať problém si všetko vyskúšať samostatne, ak chápete predchádzajúce.
A možno, pri programovaní jedného cvičenia, ste postrehli, že po
napísaní názvu objektu ActiveCell a bodky sa
zobrazila rolovacie ponuka. Práve v nej sú uvedené vlastnosti a metódy,
ktoré možno použiť pri objekte ActiveCell. Na
mieste vlastností môže vystupovať aj ďalší objekt. V tom prípade, po
jeho zvolení alebo ručným dopísanie a zapísanie ďalšie bodky, bude
zobrazená opäť rolovacie ponuka so zoznamom dostupných vlastností a metód
pre tento objekt. Skúsme si to ešte spoločne.
Zadanie: Zobrazte v dialógovom okne veľkosť písma aktívnej bunky.
Pretože od druhého zadania sa líši v tele len tým, že vybranú oblasť
Selection sme nahradili aktívny bunkou
ActiveCell, čo do funkčnosti nie je čo
vysvetľovať a určite to vyriešite bez problémov sami. Ale vnímajte
pri písaní rolovacie ponuku a jej premeny. Aké jednoduché a
priateľské. Ak viete anglicky, tak si niektoré vlastnosti a metódy z ponuky
môžete tiež skúsiť sami, len tak pre radosť
A v komentári sa podeliť o tú
radosť, a napríklad aj o to, čo sa vám podarilo vyskúmať.
Sub velikost_pisma() 'zobrazi Velikost: a velikost pisma MsgBox "Velikost: " & ActiveCell.Font.Size End Sub
Rolovacie ponuka obsahuje vlastnosti a metódy objektu:

A ako spoznáme v rolovacie ponuke, či sa jedná o vlastnosť, alebo
metódu? Jednoducho, pred názvom je vždy ikonka. Zelená je pre metódu (napr.
Activate) a tá druhá pre vlastnosť (napr. Address,
Font).
Selection je výnimočný tým, že
rolovacie ponuku nezobrazuje. Je to logické, pretože môžeme
mať vybranú bunku, hárok zošita, graf. Určite si viete predstaviť, že
graf má iné vlastnosti a metódy ako list a ako bunka. Rolovacie ponuka tu
teda nedáva zmysel.
V budúcej lekcii, , sa naučíme pracovať s konkrétnou bunkou, riadkom či stĺpcom.


