dnes je 10.12.2024

Input:

Excel 2007: Makra – VBA – Kompatibilita – 5. část

1.9.2011, , Zdroj: Verlag Dashöfer

Tento seriál se věnuje v nadhledu problémům s prací s různými verzemi Excelu. Nicméně si to uvědomujeme na konkrétním projektu, který vyžaduje svá konkrétní řešení, jinak by nic nefungovalo ani na našem Excelu.

Podkladová úloha: Dnes budeme pokračovat ve cvičném projektu, v němž jsme umožnili uživateli vytvářet záložky na buňkách, které jsou pro něj z nějakého důvodu důležité, a potřebuje se k nim umět rychle vrátit.  Avšak ukázalo se, že bezmyšlenkovitý uživatel by mohl na jednu buňku nastavit celou řadu záložek, které by jej nakonec mátly, a proto jsme začali vyvíjet v předchozím dílu kontrolní mechanismus. Ten dnes nasadíme do akce.

Stáhněte si sešit 2011-18 Kompatibilita.xlsm z odkazu na konci článku. Sešit otevřete. Uvidíte zhruba toto:

My si teď představíme, že jsme zmateným uživatelem a že kromě již existující záložky 3 Chceme vkládat na tutéž buňku další záložku. A teď provedeme konverzi své osobnosti zpátky k tvůrci programu, a pokusíme se tomu zabránit na úrovni kódu. Přepněte si do VBE a připomeňte si, že jsme posledně vytvořili funkci Over_Zalozku. Tu budeme volat před založením záložky nové:

Všimněte si, že ošetřujeme vracené výsledky pomocí struktury Select…Case. Ta pracuje s proměnnou typu celé číslo, nebo s řetězcovou proměnnou. Proto jsme zavedli proměnnou Vysledek typu Integer.

V případě, že je vrácena 0, víme, že tam žádná záložka nebyla, protože tam nebylo vůbec žádné jméno. V případě, že tam jméno bylo, ale nebyla to záložka (Vysledek=2), postupujeme zcela stejně. To lze sdružit v jednom příkazu Case, jak je vidět na obrázku. V těchto dvou případech tedy pokračuje kód zavedením nové záložky.

Ve zbývajících případech vypíšeme varování.

Teď novou funkčnost vyzkoušíme. Na buňce A5, kde je již Zalozka3, nastavíme BreakPoint do dosud nevyzkoušené funkce a stiskneme Ctrl+Shift+A. Pak krokujeme a sledujeme, zda se vše chová podle očekávání:

Neočekávaně to přeskočilo předpokládané přiřazení výsledku =1 a šlo to na „Else“. PROČ? Možná jste na to přišli už v předchozím díle. Jde o nejčastější chybu v programování, a totiž, že programátor neumí počítat. Slovo „ZALOZKA“ má přece 7 znaků, a ne 6. Hned na místě za chodu programu opravíme „6“ na „7“, a zjistíme, že vše již pracuje podle očekávání:

Musíme se ovšem ujistit, že tam, kde není dosud žádné jméno, to záložku zavede, a tam, kde jméno je, ale není to

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