Excel rozumφ, p°epφnßm...

Ovlßdacφ prvky (tlaΦφtka, roletky, Φφselnφky, ...)

autor: Ing. Petr PechßΦek

http://officir.web3.cz

Ulo₧it na disk SeÜity Excelu s uveden²mi p°φklady (komprese ZIP)

Na ·vod

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:

  • Formulß°ovΘ prvky (Zobrazit / Panely nßstroj∙ / Formulß°e)
  • Ovlßdacφ prvky ActiveX (Zobrazit / Panely nßstroj∙ / Ovlßdacφ prvky)
  • VklßdanΘ objekty (Vlo₧it / Objekt)
  • KreslenΘ objekty (Zobrazit / Panely nßstroj∙ / Kreslenφ)
  • Prvky panel∙ nßstroj∙ (viz jin² Φlßnek)
Ovlßdacφ prvky a prvky Formulß°e

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)

Prvky Formulß°e versus Ovlßdacφ prvky

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.

Prvky Formulß°e
Prvky ActiveX

Poznßmka
Panely jsou znßzor≥ovßny v podob∞, jak je b∞₧n∞ Excel nabφzφ. Znerv≤z≥uje-li vßs neΦitelnost popisk∙ panelu, Φapn∞te panely za svislou hranu a roztßhn∞te je.

Nßzvy prvk∙

Pro dobrou orientaci je t°eba znßt anglickΘ v²razy pou₧φvanΘ u prvk∙ typu ActiveX:

  • TlaΦφtku odpovφdß nßzev CommandButton.
  • (ZaÜkrtßvacφ) polφΦko je pojmenovßno jako CheckBox.
  • P°epφnaΦi se °φkß OptionButton.
  • Seznam pochßzφ z anglickΘho ListBox.
  • Poli se seznamem odpovφdß ComboBox.
  • Posuvnφk nese nßzev ScrollBar.
  • ╚φselnφk je v angliΦtin∞ pojmenovßn jako SpinButton.
  • Popisek je totΘ₧ co Label.

Panel Ovlßdacφ prvky obsahuje krom∞ jinΘho i dalÜφ standardnφ prvky.

  • P°epφnacφ tlaΦφtko alias ToggleButton. (KlasickΘ tlaΦφtko lze p°irovnat k domovnφmu zvonku, zatφmco p°epφnacφ tlaΦφtko se chovß jako dvoupolohov² vypφnaΦ sv∞tla.)
  • Prvek Image nebo-li prvek obrazovΘho typu.

DalÜφ prvky ActiveX najdeme pod ikonkou s nß°adφm.

ActiveX dalÜφ prvky

Tip
Jako prvky vhodnΘ pro zkoumßnφ doporuΦuji Microsoft Data and Time Picker, Microsoft ProgressBar nebo t°eba prvek Calendar (ten je souΦßstφ MS Access a musφ se navolit p°i instalaci MS Office - viz obrßzek). Nßzvy se mohou malinko liÜit podle verzφ Excelu.

ActiveX Calendar - instalace
Prvek Calendar v listu

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 Ikona 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 Ikona 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 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
Hodnoty vlastnostφ zpravidla vybφrßme z rozbalovacφho menu. P°esto se n∞kde menu neobjevuje. Pak postupujeme intuitivn∞. Nap°φklad u vlastnosti Value uvß₧φme, zda-li Excel oΦekßvß Φφslo, text nebo pravdivostnφ hodnotu (dvoustavov² prvek; True, False).

 

P°φklad 1. Test znalostφ (bez maker)

Test znalostφ

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ßÜ¥.

Provßzßnφ p°epφnaΦe na bu≥ku

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

ActiveX a rßmeΦek

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.

Nßstroj pro hromadn² v²b∞r prvk∙

Poznßmka
Je dobrΘ mφt p°i vytvß°enφ kolekcφ prvk∙ zobrazen panel nßstroj∙ Kreslenφ. Vyu₧ijete p°edevÜφm nßstroje v²b∞ru a zarovnßnφ. Velmi u₧iteΦn² je i p°epφnaΦ zobrazenφ m°φ₧ky na panelu Formulß°e.

Nßstroj zarovnßnφ k m°φ₧ceP°epφnaΦ zobrazenφ m°φ₧ky
Nßstroje pro zarovnßnφ

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.

╚φselnφk

P°φklad 3. DynamickΘ vyhledßvßnφ (makra)

DynamickΘ hledßnφ

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).

Vyhledßvßnφ AVyhledßvßnφ B

P°φklad 4. Kolo Üt∞stφ (makra)

Kolo Üt∞stφ

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
Je t°eba si uv∞domit, ₧e Excel nenφ urΦen pro parßdnφ animaΦnφ efekty a chybφ mu nejen kvalitnφ vykreslovßnφ (viz nap°φklad pr∙hlednost Excelu 2000), ale i solidnφ "ΦasovaΦ" (dß se naprogramovat coby externφ knihovna). Je mo₧nΘ kup°φkladu vytvo°it hodiny (i analogovΘ), bohu₧el ale samotnΘ p°ekreslovßnφ objekt∙ spojenΘ s "cukaturou" po uplynutφ jednΘ sekundy bude kazit dojem.

Rychlß tvorba maker

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.

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.

Zßznam makra

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∙.

Panel Zastavit zßznam

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.

Prvnφ makro

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!

Ulo₧it na disk SeÜity Excelu s uveden²mi p°φklady (komprese ZIP)

pro Φasopis