dnes je 19.4.2024

Input:

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

8.12.2011, , Zdroj: Verlag Dashöfer

O Filtrech je toho ještě možné napsat mnoho velmi zajímavého a užitečného. Minule jsme si slibovali vysvětlit, proč jsme při kopírování vyfiltrovaných vět nepoužili metodu PasteSpecial xlValues, a trápili jsme se s odstraňováním tlačítka, které se nechtěně na list Výstup filtru dostalo. K tomu však musíme hlouběji pochopit, jak vlastně Excel s vyfiltrovanými větami pracuje.

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

V předchozím díle jsme překopírovali vyfiltrované věty na samostatný list. Ale proti našemu přání se nám tam překopírovalo i tlačítko určené ke spouštění makra, takže jsme jej museli na výstupu makrem rušit.

Problém je v určité chybě v Excelu 2007, která způsobuje, že u PasteSpecial se někdy zkopírují nejen vybrané vyfiltrované řádky, ale i skryté řádky mezi nimi. Ale chyba se neprojeví vždy. Jakmile se jednou provede PasteSpecial dobře, tak už funguje bez problémů. Jenže psát makro s takovou nejistotou o výsledku, to by vyžadovalo chladnou nezodpovědnost.

Dnes se tedy seznámíme s ještě užitečnější metodou, kdy překopírujeme jen datové řádky, a ne hlavičkový řádek. Abyste lépe pochopili, co se na pozadí odehrává, vyfiltrujte si pardubické Hlaváčky - inženýry, selektujte vybrané věty a zvolte Kopírovat (Ctrl+C). Uvidíte zhruba toto:

Všimněte si „hemžící se“ dvojité čárkované hranice. Vyfiltrovaná množina buněk je organizována do kolekce zvané Areas (česky Oblasti). V našem příkladě je v každé oblasti jen jeden řádek, protože Hlaváčkové jsou po datech rozeseti řídce, což ovšem neznamená, že při jiném filtrování by v některých oblastech nemohlo být řádků více.

Při běžné práci v Excelu se k těmto oblastem fakticky nedostaneme. Excel s nimi pracuje většinou pouze v zákulisí. Avšak ve chvíli kopírování se maličko prozradí.

My si k těmto Areas řekneme pár užitečných informací. Předně se dozvíme, kolik těchto Areas náš filtr vybral, a to pomocí vlastnosti „Count“.

Spusťte s krokováním makro PruzkumAreas.  Uvidíte zhruba toto:

Kdybychom nepoužili výrazu

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