dnes je 28.3.2024

Input:

Excel 2007: Makra – VBA - Uživatelská funkce – 7. část

8.6.2012, , Zdroj: Verlag Dashöfer

V předchozích dílech jsme pokračovali v projektu, kde postupně zdokonalujeme práci s uživatelskými funkcemi. Když vám v Excelu nějaká funkce chybí, budete si umět poradit skoro se vším.

Minule jsme v základním provedení pracovali s vylepšením využití uživatelské funkce Kontrola_Username, která  dává k dispozici údaje o osobě, která je přihlášena k počítači. Museli jsme se vypořádat s tím, že až si předseda otevře vyplněný formulář na svém počítači, původní funkce by vyhodnotila kolonku formuláře vždy, jako že je přihlášen předseda. Proto jsme již odladěnou funkci zapojili přes event proceduru listu, aby se vyplněný údaj o původním uživateli po vyplnění už neměnil.

Podkladová úloha: Pracujeme se sešitem, v němž je formulář, jejž je třeba vyplňovat. Dnes nás předseda klubu překvapil požadavkem, že chce posuzovat znamení zvěrokruhu, v němž se uchazeč narodil. Stáhněte si sešit 2012-12 UD-funkce.xlsm z odkazu na konci článku. Sešit otevřete. Uvidíte zhruba toto:

Uchazeč má projevit své znalosti o znameních používaných v astrologii. Má si vybrat, ve kterém znamení si myslí, že je narozen. Tato úloha ovšem není jednoznačná. Má v zásadě 4 možnosti: Buď vyplní své znamení špatně, nebo je jeho datum narození zařazeno jednoznačně správně, nebo je jeho datum narození přítomno na hranici dvou znamení a on správně zvolí dřívější znamení, nebo správně zvolí pozdější znamení. V rámci programování listu byl použit prvek ActiveX (na obrázku v buňce B12), propojený na list Param, kde je toto:

Předsedu zajímá, zda je uchazeč „mimo“ problematiku zvěrokruhu, nebo pokud své znamení zná, a shodou náhod se narodil na hranici, zda se zařazuje spíše dozadu, nebo dopředu. Tedy například pokud se narodil 20. 4. 1982, zda se přiřadí k Beranovi, nebo k Býkovi.

Jistě by bylo představitelné sestavit vyhledávací funkce Excelu tak, aby tento výsledek také poskytly. Nicméně my si sestrojíme k tomuto účelu uživatelskou funkci, jejímiž parametry budou:

  • Datum narození uchazeče
  • Tabulka Zodiak
  • Hodnota uchazečem zvoleného znamení

a výstupem bude „Neorientuje se ve zvířetníku“, „Správně se zařadil“, „Ze dvou možností si vybral dřívější znamení“, „Ze dvou možností si vybral pozdější znamení“.

Naše funkce tedy musí najít podle data narození název znamení odspodu a odshora, a porovnat je s volbou uchazeče. Když začneme funkci konstruovat, narazíme na problém, že VBA sám nemá vyhledávací funkci, v níž by v setříděném číselném seznamu našel interval, do nějž hledaná hodnota patří. Museli bychom takovou funkčnost

Nahrávám...
Nahrávám...