2. diel - Klasické Hello a úvod do OOP pre makrá
V minulej lekcii, Úvod do tvorby makier pre Microsoft Office , 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, Makrá pre prácu s konkrétnou bunkou, riadkom či stĺpcom , sa naučíme pracovať s konkrétnou bunkou, riadkom či stĺpcom.