dnes je 25.4.2024

Input:

Excel 2007: Makra - VBA - Kompatibilita - 3. část

4.8.2011, , Zdroj: Verlag Dashöfer

V předcházejících dílech jsme probírali rozdíly mezi verzemi Excelu. 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řísluš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, a pokud možno nemátlo.

Podkladová úloha: 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 pro něj z nějakého důvodu důležité, a potřebuje se k nim rychle vracet. V předchozím dílu jsme si připravili makro na zjišťování nejvyššího čísla dosud použitých záložek.  Rovněž jsme se naučili přeřadit klávesovou zkratku od jednoho makra k jinému.

Myšlenka je jednoduchá. Tvoříme makro, které se spustí klávesovou zkratkou 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 jednoduchá makra, která jsme použili trochu jako lešení pro stavbu projektu a začali jsme lešení nahrazovat cílovými prvky.

Dnes 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. Navíc chceme, aby uživatel nebyl pohledem na zvláštnosti zmaten.

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

Posledně jste si všimli, ž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,...Tentokrát se uvedených pozůstatků zbavíme. Použijeme  vlastnosti „CodeName“, kterou upravíme z anglických názvů například tak, jak je vidět na obrázku:

Aktivujte v okně Projektu list Sheet1. Přepište označení Sheet1 (kam ukazuje červená šipka) na List1, a následně podobně aktivujte Sheet2, přejmenujte na List21, Sheet3 na List22,…Sheet5 na List25.

Mohli byste si samozřejmě listy pojmenovat i úplně jinak, třeba „kůzle6“ – viz obrázek:

Takový rozlet ovšem můžeme zaplatit tím, že v jiných jazykových verzích, nebo ve verzích starších, s tím vzniknou potíže. Při práci na projektech, kde musíme předpokládat více jazykových verzí, vyžaduje PŘEDBĚŽNOU OPATRNOST.

Předběžnou opatrností budeme rozumět to, že i když nám to naše verze programu dovoluje, nenecháme se svést ke zbytečnému hravému rozletu, ale budeme se držet konzervativní strategie. To lze ospravedlnit zejména tím, že programátoři

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