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 začali tvořit funkci Zodiac, která vyhodnocuje vztah uchazeče k znamením zvěrokruhu, jak předseda klubu požadoval. Nicméně funkce nám při ladění vrátila výsledek nesprávný výsledek na hranici znamení. Dnes to musíme rozluštit
Podkladová úloha: Pracujeme se sešitem, v němž je formulář, jejž je třeba vyplňovat. Nedávno 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-14 UD-funkce.xlsm z odkazu na konci článku. Sešit otevřete. Uvidíte zhruba toto:
Musíme prověřit hraniční datumy. Změnili jsme datum narození uchazeče na 22.12.1982, což je datum spadající jak do Střelce, tak do Kozoroha a krokujeme:
Jenže ouha, zase je výsledek „Nothing“. Využijeme toho, že objekt Find je společný pro VBA i pro Excel, a po průchodu funkcí zkusíme v Excelu hledat ručně to samé, co si myslíme, že hledá VBA:
Zrada je v tom, že při dosazení do objektu Find z VBA se použije americký formát data, zatímco v českém Excelu se použije český formát. Pokud teď zde opravíme řetězec na „22.12.1982“, Excel hodnotu najde.
Tento problém objedeme ve VBA využitím formátovací funkce, která sleduje místní zvyklosti podle nastavení ve Windows. (Aby byla zachována návaznost na začátek článku, provedl jsem…