dnes je 29.3.2024

Input:

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

24.11.2011, , Zdroj: Verlag Dashöfer

Dnes budeme dále pokračovat v seriálu o Filtrech. Dnes se zaměříme na velmi častou úlohu, jíž je extrakce vyfiltrované oblasti jinam.

Podkladová úloha: Pracujeme již popáté se stejnou rozsáhlejší tabulkou. Stáhněte si sešit 2011-24 Filtry.xlsm z odkazu na konci článku. Sešit otevřete. Uvidíte zhruba toto:

V předchozích dílech jsme se naučili řadu podrobností pro účinné nastavování filtrů pro větší pohodlí uživatele našeho makra. A teď začne namlsaný uživatel chtít, abychom mu vyfiltrované „Hlaváčky“ překopírovali na jiný list, kde si je chce třeba ručně dále formátovat.

Nejdříve si uvědomíme, co bychom dělali sami ručně. Založíme si nový list „Výstup filtru“. Nastavíme se na levý sloupec hlavičky s vyfiltrovanými větami. Pak selektujeme buňky ve směru dolů, a pak doprava v délce hlavičky. (Např. Ctrl+Shift+↓, pak Ctrl+Shift+→  )

Selektovaný blok vložíme do schránky, přejdeme na požadovaný list, a ze schránky vypustíme.

Využijme jako inspiraci nahrávání maker, a zaznamenáme výše uvedený postup.

Vznikne např. takovéto makro:

Sub Makro2()

' Makro2 Makro

Range(Selection, Selection.End(xlDown)).Select

Range(Selection, Selection.End(xlToRight)).Select

Selection.Copy

Sheets("Výstup filtru").Select

ActiveSheet.Buttons.Add(168, 0.75, 24, 14.25).Select

ActiveSheet.Paste

End Sub

A výsledek bude vypadat následovně:

Všimněte si, že proti našemu přání je na výsledku kopírování i tlačítko filtru, což je nežádoucí. Vypadá to, že v makru se zaznamenalo kopírování tlačítka zvlášť. My tam to tlačítko nechceme, takže řádek s jeho přenosem smažeme.

ActiveSheet.Buttons.Add(168, 0.75, 24, 14.25).Select

Kromě toho přizpůsobíme makro k selektování od „A1“ následovně:

Range(Selection, Selection.End(xlDown)).Select

Range(Range(„A1“), Range(„A1“).End(xlDown)).Select

Zkusíme vylepšené makro spustit znovu, ovšem napřed si list s výstupem vyčistíme.

Spustíme pomocí Alt+F8 následovně:

Nicméně zjistíte, že se tlačítko tak jako tak

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