Ovlßdacφ prvky (tlaΦφtka, roletky, Φφselnφky, ...)
Tento Φlßnek lehce p°edbφhß dobu a bude pro mnohΘ z vßs prvnφm seznßmenφm se s makry a programovßnφm. Proto je °ada p°φklad∙ spφÜe lehΦφho ra₧enφ a mß za ·kol "navnadit". Jednoduch² zp∙sob vytvß°enφ maker najdete na ·plnΘm konci dneÜnφ Φßsti. P°ilo₧en² seÜit pak obsahuje Üirokou Ükßlu p°φklad∙. Cφlem nßsledujφcφch odstavc∙ je nastφnit mo₧nosti v p°φpad∞ opakujφcφch se operacφ v Excelu a rozÜφ°it obzory v oblasti °φzenφ. Vyu₧ijeme p°itom interaktivnφch schopnostφ urΦit²ch objekt∙ a spojenφ takov²ch objekt∙ s automatickou Φinnostφ (od jednoduchΘho vklßdßnφ hodnoty do propojenΘ bu≥ky a₧ po slo₧it∞jÜφ makra). Jin²mi slovy, p∙jde nßm o takovΘ prvky, kterΘ jsou schopny vazby akce-reakce v hlubÜφm v²znamu. Impulsy pro nastartovßnφ p°itom nejΦast∞ji dßvajφ vstupnφ za°φzenφ jako je klßvesnice a myÜ. Na v²b∞r mßme tyto prvky:
Programßto°i namφtnou, ₧e do reakceschopn²ch prvk∙ objektovΘho modelu Excelu pat°φ i okna, seÜity, listy, grafy atd. A majφ pravdu. Popud k reakci nemusφ nutn∞ vzejφt z klßvesnice nebo myÜi. Reakce mohou b²t spojeny nap°φklad s otevφrßnφm seÜitu, zm∞nou bu≥ky, aktualizacφ grafu, nebo t°eba s dosa₧enφm ΦasovΘho limitu. AΦkoliv jsou v p°φloze ukßzßny i tyto p°φpady, nenφ cφlem tohoto Φlßnku je dopodrobna probφrat, nebo¥ u nich p°eva₧uje "programovß strßnka" v∞ci. P°edm∞tem zßjmu budou dßle p°edevÜφm prvky Formulß°e a Ovlßdacφ prvky. Poznßmka: Obecn∞ lze za reakceschopnΘ objekty listu pova₧ovat ty, kterΘ v p°φruΦnφm menu (klepnutφ prav²m tlaΦφtkem myÜi) obsahujφ volbu P°i°adit makro. ZvlßÜtnφ pozici pak zaujφmajφ hypertextovΘ odkazy (menu Vlo₧it / Hypertextov² odkaz) |
Zdßnliv∞ je v∞tÜina prvk∙ ActiveX toto₧nß s t∞mi z panelu Formulß°e. Na obou panelech nßstroj∙ najdeme zaÜkrtßvacφ polφΦko, tlaΦφtko, p°epφnaΦ, popisek atd. ProΦ tedy dvojφ vydßnφ? Formulß°ovΘ prvky pochßzejφ z doby, kdy jeÜt∞ technologie ActiveX byla v plenkßch a z∙stßvajφ v Excelu z d∙vodu zp∞tnΘ kompatibility. Poznßmka Nßzvy prvk∙Pro dobrou orientaci je t°eba znßt anglickΘ v²razy pou₧φvanΘ u prvk∙ typu ActiveX:
Panel Ovlßdacφ prvky obsahuje krom∞ jinΘho i dalÜφ standardnφ prvky.
DalÜφ prvky ActiveX najdeme pod ikonkou s nß°adφm. Tip Nelze jednoduÜe °φci, ₧e nov∞jÜφ ActiveX jsou lepÜφ. Porovnßnφ a mo₧nosti uvßdφ nßsledujφcφ tabulka. |
||
Prvky Formulß°e | Prvky Active X | |
---|---|---|
Vytvo°enφ | Klepnutφ na ikonku panelu Formulß°e a vymezenφ velikosti. | Klepnutφ na ikonku panelu Ovlßdacφ prvky a vymezenφ velikosti. |
Aktivace re₧imu ·prav | Klepnutφ prav²m tlaΦφtkem myÜi na prvek. | StlaΦenß ikonka Re₧im nßvrhu panelu nßstroj∙ Ovlßdacφ prvky. |
Deaktivace re₧imu ·prav | Klepnutφ mimo prvek. | NestlaΦenß ikonka Re₧im nßvrhu panelu nßstroj∙ Ovlßdacφ prvky. |
Hlavnφ mφsto ·prav | Dialog Formßt ovlßdacφho prvku (menu Formßt / Objekt, resp. p°φruΦnφ menu a volba Formßt ovlßdacφho prvku). | Okno Properties editoru VBA objevujφcφ se po kliknutφ na ikonu Vlastnosti panelu Ovlßdacφ prvky. |
V²hody | JednoduchΘ, nenßroΦnΘ na pam∞¥, barevnß paleta toto₧nß s paletou pro list, bezproblΘmovß ΦeÜtina. | Vφce mo₧nostφ interakce, mo₧nost vklßdßnφ prvk∙ ActiveX jin²ch aplikacφ (Flash, ovlßdacφ prvky Media Playeru apod.). |
Nev²hody | MΘn∞ mo₧nostφ interakce, nevhodnß spoluprßce se zßmkem listu (Excel 2000). | NßroΦnΘ na pam∞¥, odliÜnß barevnß paleta, nutnß znalost angliΦtiny, mo₧nΘ chyby diakritiky ("≥", "∞") v Excelu 2000, nevhodnß spoluprßce se zßmkem listu (Excel 2000), degradace prvk∙ mal²ch velikostφ v Excelu XP. |
Prßce s prvky Formulß°e se odehrßvß v ΦeskΘm prost°edφ a nem∞li byste narazit problΘm, u ActiveX osv∞tlφm n∞kolik b∞₧n²ch vlastnostφ, na kterΘ narazφte v okn∞ Properties. P°φklad se t²kß prvku TextBox. Vlastnosti obsahujφcφ slovφΦka Color, Font, Style, Shadow nebo t°eba Effect asi nemusφm rozebφrat. Vlastnost Enabled povolφ nebo naopak zmrazφ ovlßdacφ prvek (hodnota True, resp. False). Vlastnosti Height a Width urΦujφ v²Üku a Üφ°ku prvku. Vlastnosti Top a Left uΦujφ polohu prvku vzhledem k levΘmu hornφmu rohu okna (odshora, zleva). Vlastnost LinkedCell obsahuje p°φpadn² odkaz na bu≥ku listu, ve kterΘm se prvek nachßzφ (zßpis je t°eba provΘst ruΦn∞ ve znßmΘm tvaru, nap°. C5). Stejn∞ jako u prvku Formulß°e je i zde komunikace obousm∞rnß. Maxlength znaΦφ maximßlnφ povolen² poΦet vklßdan²ch znak∙ a PasswordChar obsahuje znak, kter² se zobrazφ, chceme-li skr²t skuteΦnΘ znaky (nap°. hv∞zdiΦka). MultiLine a WordWrap umo₧nφ zalamovßnφ °ßdku v textovΘm poli, ScrollBars skr²vß Φi zobrazuje posuvnφky a Value (jako₧to zde i Text) p°ednastavuje hodnotu prvku. Funkce vlastnosti PrintObject je z°ejmß. Ne vÜechny vlastnosti se zobrazujφ u vÜech prvk∙ ActiveX. N∞kterΘ jsou navφc, n∞kterΘ chybφ. D∙le₧itß je vlastnost Caption, kterß by m∞la obsahovat "lidsk² nßzev" prvku (vlastnost Name obsahuje internφ nßzev pou₧φvßn² v k≤du maker). Poznßmka 1 |
P°φklad 1. Test znalostφ (bez maker)Obrßzek v²Üe ukazuje, jak lze vyu₧φt p°epφnaΦ∙ (v danΘm p°φpad∞ z panelu Formulß°e) k vytvo°enφ testu znalostφ. Ka₧dß trojice p°epφnaΦ∙ je obalena prvkem Skupinov² rßmeΦek (popisek rßmeΦku vyu₧it k zadßnφ otßzky). Pokud bychom toti₧ rozmφstili vÜechny p°epφnaΦe v listu voln∞, mohl by b²t vybrßn jen jeden z nich! RßmeΦek jakoby ruÜφ "radiovΘ vysφlßnφ" prvk∙ uvnit° a prvky "za zdφ" o jejich partyzßnskΘ Φinnosti nevφ. DalÜφ obrßzek (dialog Formßt / Ovlßdacφ prvek) znßzor≥uje provßzßnφ ovlßdacφho prvku panelu Formulß°e s bu≥kou listu a volbu stavu p°epφnaΦe. Provßzanß bu≥ka p°itom nejevφ ₧ßdnΘ znßmky vazby (neobjevuje se vzorec nebo n∞co podobnΘho). Komunikace prvek-bu≥ka je oboustrannß, tzn. ₧e zm∞na v jednom elementu se projevφ ve druhΘm. Z toho vypl²vß, ₧e zm∞na stavu prvku vyvolß zm∞nu v bu≥ce (zobrazφ se po°adovß hodnota aktivnφho prvku), ale i to, ₧e ruΦn∞ zadanß hodnota v bu≥ce zm∞nφ stav prvku (skupiny prvk∙). Jak asi tuÜφte, manußlnφ zm∞na hodnoty na 1, 2 nebo 3 v bu≥ce N10 aktivuje jeden ze t°φ prvk∙ prvnφ skupiny p°epφnaΦ∙. Nula deaktivuje vÜechny p°epφnaΦe skupiny, ostatnφ hodnoty jsou ignorovßny. Tφm, ₧e prvky pat°φ do tΘ₧e skupiny, nastavenφ vazby na bu≥ku u jednoho p°epφnaΦe se promφtne i do ostatnφch prvk∙ skupiny a nenφ tedy nutnΘ p°ipojovat ka₧d² prvek skupiny zvlßÜ¥. Mechanismus sΦφtßnφ je postaven na funkci STEJN╔, je₧ vracφ PRAVDA (hodnota 1) nebo NEPRAVDA (hodnota 0). P°φklad je mo₧nΘ rozÜφ°it. KlφΦ samoz°ejm∞ nemusφ b²t obsa₧en v testu nebo m∙₧e b²t vhodn∞ skryt. Lze realizovat i myÜlenku, kdy po uplynutφ ΦasovΘho limitu se soubor zahesluje a uzav°e (nebo t°eba odeÜle e-mailem). To, co bylo °eΦeno o rßmeΦku okolo p°epφnaΦ∙ panelu Formulß°e, by m∞lo platit i u p°epφnaΦ∙ z panelu Ovlßdacφ prvky (zde naz²van²ch OptionButtons). Ale ouha, u₧ na prvnφ pohled je z°etelnΘ, ₧e prvek rßmeΦek (Frame) na panelu Ovlßdacφ prvky chybφ. Zkusme tedy pßtrat v archivu dalÜφch ovlßdacφch prvk∙. Nalezneme prvek Microsoft Forms 2.0 Frame Radost je p°edΦasnß, vlo₧en² element Frame odmφtß s prvky p°epφnaΦ (OptionButton) spolupracovat. Mßte-li chu¥ pßtrat dßle, vyzkouÜejte z p°φruΦnφho menu pro tento element volbu Objekt Frame / Edit. Zobrazφ se panel nßstroj∙ b∞₧n² p°i vytvß°enφ tzv. UserForms v editoru VBA. Z tohoto panelu lze sice vklßdat takΘ prvky OptionButton (z°eteln∞ se liÜφ od t∞ch z panelu Ovlßdacφ prvky pr∙hlednostφ), ale nastavit vlastnosti lze op∞t pouze z p°φruΦnφho menu volbou Properties. Zde u₧ nastupuje "tvrdß" angliΦtina a evidentn∞ nikdo nepoΦφtal, ₧e se sem u₧ivatel dostane (okno Properties v tΘto podob∞ jsem sßm vid∞l poprvΘ v dob∞ psanφ tohoto Φlßnku a vypadß, jako by pochßzelo z doby "raz dva"). Ka₧dopßdn∞ je pro nßÜ ·Φel nepou₧itelnΘ. Tohle klubko prost∞ nerozmotßme a asi jedin²m doporuΦenφm je: Pou₧φvejte p°epφnaΦe z panelu Formulß°e. Podot²kßm, ₧e kombinovat prvek rßmeΦek z panelu Formulß°e a p°epφnaΦe ActiveX nejde. Poznßmka P°φklad 2. V²uka funkcφ (bez maker)Ukßzka na prvnφ pohled jednoduchΘho vyu₧itφ Φφselnφku asi nenechß na pochybßch nikoho z vßs. ╚φselnφk propojen² na bu≥ku m∞nφ jejφ hodnotu. Ta p°edstavuje prvnφ a₧ pßtou mocninu funkce. Zm∞na se bezprost°edn∞ promφtne v datech stejn∞ jako v grafu. P°φklad 3. DynamickΘ vyhledßvßnφ (makra)V tomto p°φkladu bylo vyu₧ito textovΘho pole panelu Ovlßdacφ prvky p°i vyhledßvßnφ v zßznamech, a to v reßlnΘm Φase. Voln∞ dostupnΘ makro umo₧≥uje nalistovat zßznam s nalezenou skupinou doposud zadan²ch textov²ch znak∙. Prvnφ °ßdek s ovlßdacφm prvkem je ukotven s pomocφ menu Okno / Ukotvit p°φΦky a °ßdky se zßznamy jsou podsouvßny pod n∞j. Chovßnφ je naznaΦeno nφ₧e. Zatφmco skupina znak∙ "sk" je nalezena prvn∞ v polo₧ce "Bradsk²", slabika "sko" u₧ p°edlo₧φ "Skokan". Odstran∞nφ pφsmene "o" slabiky "sko" navrßtφ v²b∞r op∞t na polo₧ku "Bradsk²". ┌plnΘ vymazßnφ pak zobrazφ kompletnφ seznam v nesrolovanΘ podob∞. V²hoda tohoto postupu je v tom, ₧e je po ruce a jasn∞ definuje oblast hledßnφ (sloupec). ╚asto je toti₧ k zlosti p°ednastavenß volba vyhledßvßnφ "po °ßdcφch" standardnφho nßstroje Excelu (menu ┌pravy / Najφt, Ctrl+F). P°φklad 4. Kolo Üt∞stφ (makra)DalÜφ p°φklad je ukßzkou hravosti, kterß snad nenφ a₧ tak ·Φelnß, jako spφÜe povzbuzujφcφ a dokazujφcφ, ₧e "to jde". Pou₧ito bylo kolßΦovΘho grafu (zdrojovß data jsou schovßna pod samotn²m grafem). P°idru₧enΘ makro pak ve smyΦce ukonΦenΘ nßhodn²m Φφslem m∞nφ barvu v²seΦφ v ΦasovΘm sledu danΘm metodou Application.OnTime. V²slednΘ chovßnφ v Φase je ovlivn∞no nejen touto metodou, ale i rychlostφ zpracovßnφ vlastnφho k≤du a zßvisφ na v²konu poΦφtaΦe. (Zkusit m∙₧ete pozm∞nit v k≤du zlomkovou Φßst nßsledujφcφ za funkcφ Now °ßdku Application.OnTime.) Poznßmka |
P°evß₧nß v∞tÜina ovlßdacφch prvk∙ mß smysl ve spojenφ s makry, tedy jakousi posloupnostφ p°φkaz∙, kterou m∙₧eme jednφm mßvnutφm proutku opakovan∞ aplikovat. Makra lze vytvß°et i bez znalosti VBA. Jdeme na to. VeÜkerß naÜe prßce se bude odkazovat na menu Nßstroje / Makro. Jako prvnφ nastavφme ·rove≥ zabezpeΦenφ maker na p°ijatelnou st°ednφ ·rove≥ (Nßstroje / Makro / ZabezpeΦenφ / karta ┌rove≥ zabezpeΦenφ, volba St°ednφ). Nßsledn∞ u₧ p°ejdeme k samotnΘmu nahrßnφ makra. Zvolφme Nßstroje / Makro / Zßznam novΘho makra. Makru dßme vhodn² nßzev a dalÜφ volby ponechßmy v tuto chvφli beze zm∞n. Dialog potvrdφme. Objevφ se panel nßstroj∙ Zastavit zßznam a od tΘto chvφle je p°evß₧nß Φßst naÜφ Φinnosti, kterou budeme v Excelu provßd∞t, nahrßvßna. Pro zastavenφ zßznamu slou₧φ ikona plnΘho ΦtvereΦku na zmφn∞nΘm panelu nßstroj∙. Nßmi nahranΘ makro najdeme v seznamu pod menu Nßstroje / Makro / Makra. Otev°en² dialog Makro je tent²₧, kter² se zobrazuje, kdy₧ chceme ovlßdacφmu prvku makro p°i°adit. Necht∞nΘ dφlko vyma₧e tlaΦφtko Odstranit. Je-li naopak naÜφm p°ßnφm prohlΘdnout si k≤d makra, klepneme na tlaΦφtko Upravit. Otev°e se okno editoru VBA, kterΘ zobrazφ programovΘ °ßdky naÜeho v²tvoru. A mo₧nß si to neuv∞domujete, ale prßv∞ tento okam₧ik je momentem prvnφho kr∙Φku na cest∞ za titulem "programßtor Visual Basicu for Application". Gratuluji! |