dnes je 21.12.2024

Input:

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

12.10.2011, , Zdroj: Verlag Dashöfer

V několikadílném seriálu o filtrech budeme navazovat na předchozí díl. Od verze 2007 byly schopnosti filtrů dále rozšířeny o výběr podle seznamu. Z důvodu kompatibility ke starším verzím zatím nebudeme tuto novou funkčnost příliš používat, protože využívá novou kolekci ve filtrech, kterou starší verze neznají. I tak budete mít z ovládnutí filtrů ve VBA velký užitek.

Podkladová úloha: Budeme pracovat s rozsáhlejší tabulkou. Využijeme databázi z jedné z dřívějších lekcí. Stáhněte si sešit 2011-21 Filtry.xlsm z odkazu na konci článku. Sešit otevřete. Uvidíte zhruba toto:

V předchozím dílu jsme si všimli, že jak pokyn k zapnutí filtru, tak k jeho vypnutí, vypadá stejně.  Proto jsme se museli naučit zjistit z VBA, zda je na listu filtr zapnutý, nebo ne.

Použijeme tedy hodnotu AutoFilterMode. Pokud vrátí „False“, je AutoFilter na listu vypnutý.

Pro milovníky návodů si ještě můžete otevřít Nápovědu s heslem AutoFilterMode. Ideálně stiskem <F1> při zamodřeném řádku s „AutoFilterMode“. Tam se nám hypotéza potvrdí.

Dnes se ještě budeme seznamovat se součástkami filtrů. Je na místě podotknout, že využití filtrů z VBA patří k vynikajícím způsobům, jak mnoho úloh provést značnou rychlostí, na rozdíl od druhé možnosti, jíž je procházení tabulky řádek po řádku přes všechny řádky, k čemuž by pravděpodobně přistoupil programátor, který by o ovládání filtrů z VBA nic nevěděl. Ale abychom nepatřili k těm, kteří o filtrech nic nevědí, seznámení se součástkami objektů je pro nás hodně důležité. Neznamená to, že je v budoucnu všechny budeme využívat. Ale musíme jaksi vědět v paralele s automechanikem, že „brzdy obsahují obložení, které se musí čas od času vyměnit, a systém brzdovou kapalinu, která by se měla kontrolovat.“

Uvědomme si jednu potíž s filtry na listu, pokud tam nějaký filtr je nastaven. Pokud by s nastavením filtru uživatel sám nic nedělal, mohli bychom předpokládat, že rozsah filtru je nastaven naším makrem na celou databázi. Jenže uživatelé jsou

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