V předchozím dílu jsme dokončili funkčnost úlohy vybrat všechna města, v nichž se vyskytuje nějaký Jan Hlaváček, uklidili jsme po sobě, výsledek jsme přenesli na samostatný list. Dnes tuto úlohu dotáhneme do konce tak, aby se sešitem mohla pracovat třeba málo zkušená osoba.
Podkladová úloha: Pracujeme již podvanácté se stejnou rozsáhlejší tabulkou. Stáhněte si sešit 2012-05 Filtry.xlsm z odkazu na konci článku. Sešit otevřete. Uvidíte zhruba toto:
Navazujeme na tuto úlohu: „Dostali jsme od vedení naléhavý úkol najít seznam všech měst, kde se vyskytuje nějaký Jan Hlaváček. Dozvěděli jsme se, že podobnou úlohu budeme dostávat pravidelně několikrát denně a s různými příjmeními a městy. Máme to připravit tak, abychom si rovněž mohli vzít dovolenou, a méně zkušená osoba to rovněž se souborem zvládla“.
Na list Param jsme si uložili kritéria pro potřebný rozšířený filtr:
Současné makro, které pomocí rozšířeného filtru z databáze přeneslo setříděný seznam, jsme museli ovládat tak, že jsme přešli sem, na list Param, a ručně jsme třeba změnili jméno na Jaroslav Hlaváček. Na to ovšem při představě nezkušeného kolegy musíme zapomenout. Místo toho využijeme na listu Ovládání makro, které jsme vytvořili v lekci 2011-5. Je uvedeno v modulu MD_prijmeni (v níže připojeném příkladu) a začíná takto:
V komentáři k makru máme poznámku, že vybírá jen jména, která se v databázi vyskytují, což je výhoda. Připomeneme si, co toto makro mělo za úkol. Tehdy jsme cvičili nekonečný cyklus Do …Loop. Cílem makra bylo donutit uživatele, aby uhodl přítomnost příjmení, jména a titulu, nebo akci vzdal zadáním prázdného řetězce. Předpokládejme, že vedení ví spolehlivě jméno a příjmení, takže nebudeme muset váhat a podbízet se s nějakým pomocným seznamem, z něhož by se výběr upřesnil. Titul není v zadání důležitý.
Máme dvě možnosti: Buď makro upravíme tak, aby umělo zpracovat původní úlohu a k tomu novou úlohu, nebo si ho zkopírujeme a přejmenujeme. Přejmenovanou verzi si upravíme podle potřeb.
Dnes se pokusím předvést první metodu. Pro začátečníky je obecně vhodnější druhá, protože si fungující makro nepokazí. Nicméně první metoda se může často velmi hodit, takže je na místě si ji ukázat.
K zobecnění využijeme parametr s deklarací Optional. Jeho pomocí rozlišíme, zda má makro dělat svou…