dnes je 10.12.2024

Input:

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

18.7.2011, , Zdroj: Verlag Dashöfer

V minulém dílu jsme zahájili seznamování s verzemi Excelu s ohledem na jejich rozdíly. Sami obvykle pracujeme s verzí, kterou máme nainstalovánu na svém počítači. Ovšem často vytvořený soubor odesíláme jiným uživatelům, kteří mají nainstalovány verze jiné. Verze se mohou lišit jednak přísušným označením Office, např. 1997, 2003, 2010 apod., jednak jazykem, např. česky, německy, anglicky. Cílem této série článků je, aby to, co odešleme, na druhé straně také fungovalo.

Podkladová úloha: Dnes budeme pokračovat ve cvičném projektu, v němž umožníme vytvářet uživateli záložky na buňkách, které jsou z nějakého důvodu důležité, a je třeba se k nim rychle umět vrátit.

Myšlenka je jednoduchá. Vytvoříme makro, které se spustí klávesovou zkratkou (např. Ctrl+Shift+A), a které právě aktuální buňku, na níž vidíme stát selektor, pojmenuje „Zalozka1“, „Zalozka2“, ... tak, aby číslo za slovem „Zalozka“ bylo vždy o 1 vyšší, než dosud nejvyšší použité. V předchozím dílu jsme vytvořili strukturu sešitu a velmi jednoduchá makra, která jsme použili trochu jako lešení pro stavbu projektu.

Postupně budeme projekt vylepšovat, a budeme mít na paměti, že výsledek má fungovat i na starších verzích Excelu a v jiných jazykových mutacích.

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

Nastavte selektor jak vidíte na obrázku a stiskněte žluté tlačítko „Přejdi na záložku“. Tím vyzkoušíte funkčnost záložek.

Všimněte si, že sešit byl tentokrát otevřen v české verzi Excelu 2007, ačkoli byl vytvořen v anglické verzi Excel 2003. Stopy tohoto přechodu jsou patrny v Project Manageru, jak jsme viděli už minule, na následujícím obrázku:

Všimněte si, jak v souboru zůstaly listy označené List2, List3,... z českých Office a z anglických Office Sheet1, Sheet2,... Tento jev ukazuje, že s jazykovými verzemi musíme být opatrní. Pro funkčnost to nemá vliv, leda bychom dostali nepřekonatelnou chuť se pomocí těchto názvů na listy odkazovat v nějakém cyklu. Můžete je vypsat pomocí vlastnosti „CodeName“ například tak, jak je vidět na obrázku:

Minule jsme plánovali, přeřadíme klávesovou zkratku z primitivního nahraného makra Zalozka1 na blíže k cíli napsané makro „Zaved_Zalozku“.

Postup podle obrázku: v Excelu stisknout <Alt+F8>, vybrat makro Zaved_Zalozku, stisknout „Options“ a v dialogovém okně  „Macro Options“ stisknout <Shift>+<A>. Upravíme i text v políčku Popis (v anglické verzi to bylo Description) jak je patrno z obrázku. Pak „OK“ a klávesová zkratka je přiřazena. Zatím jsme provizorní kód neupravovali, takže to vždy přiřadí jen „Zalozka2“.

Ale pozor!!!  Nedostatek tohoto postupu spočívá v tom, že teď jsou před tváří Excelu pod klávesovou zkratku Ctrl+Shift+A přiřazeny dvě rutiny. První byla zavedena Zalozka1, takže Excel spravedlivě podle pravidla „Kdo dřív přijde, ten dřív mele“ spustí Zalozka1. Musíme se obtěžovat, a obdobným postupem, jako jsme přiřazovali   klávesovou zkratku u Zaved_zalozku, smazat písmeno

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