Tento seriál se v dílech 1-5 věnoval v nadhledu problémům s prací s různými verzemi Excelu. Tento díl se pokusí završit cvičný projekt, na němž jsme to demonstrovali.
Podkladová úloha: Dnes chceme dotáhnout do plné funkčnosti cvičný projekt, 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. Budeme chtít vypsat seznam záložek na listu „Zalozky“.
Stáhněte si sešit 2011-19 Kompatibilita.xlsm z odkazu na konci článku. Sešit otevřete. Uvidíte zhruba toto:
Zatím jsme neřešili problém, jak se sem všechny záložky dostanou, aniž bychom je sem vypouštěli ručně metodou popsanou v Dílu 1:
To se nyní pokusíme provést ve VBA. Necháme se inspirovat nahráváním maker. Výsledek je následující:
Sub Makro1()
Selection.ListNames
End Sub
Místo Selection si dáme vlastní cíl, a tím bude buňka A4. Sestrojíme tedy samostatnou rutinu, kterou budeme umět ve vhodném okamžiku vyvolat:
Všimněte si příkazu
Range("C4").Resize(Posl_Radek - 3).PasteSpecial
Obsahuje „-3“. Co to znamená? Metoda Resize má jako argumenty počet řádků a sloupců, avšak v naší proměnné „Posl_Radek“ se vyskytuje číslo řádku. Protože jsme náš blok vypustili od 4.řádku, znamená to, že musíme první 3 řádky odečíst.
Možná jste si dále všimli, že na začátku je deklarován puvList a puvBunka.
Ty sledují účel neobtěžovat uživatele, aby se po každém zápisu záložky musel vracet na místo, odkud byl výpis seznamu vyvolán. Prostě při vstupu do rutiny si zapamatujeme původní list, a před operacemi na listu si zapamatujeme původní buňku.
Před návratem z rutiny rozmístíme aktivní prvky tak, jak byly původně při vstupu do rutiny.
Dalším krokem bude v seznamu nastavit filtr. Jsou dvě možnosti. Buď nastavíme filtr v téže rutině, která vkládala názvy, nebo k tomu účelu vytvoříme rutinu samostatnou.
K rozhodnutí mezi oběma podobnými možnostmi musíme zvážit očekávání vývoje aplikace. Pokud bychom chtěli v budoucnu umět využít stránku…