Zdroj: https://wall.cz/excel-navod/podminene-formatovani-bez-omezeni • Vydáno: 5.6.2010 16:54 • Autor: admin

Podmíněné formátování bez omezení

ExcelPodmíněné formátování je velmi užitečný nástroj, pomocí kterého můžete zpřehlednit svá data a upozornit na určité hodnoty např. na blížící se termín nebo jinou významnou hodnotu. Bohužel jsme omezeni jen na tři podmínky.

Pokud neznáte funkci Podmíněné formátování, doporučuji vám přečíst si jeden ze souvisejících článků uvedených na konci tohoto článku.

Zkušenější uživatelé, kteří podmíněné formátování využívají zřejmě brzy narazili na omezení tří podmínek. Toto omezení lze obejít vlastním makrem, které sleduje změny na listu.

Takové řešení může vypadat např. takto:
Na listu jsem vytvořil dvě oblasti. První oblast je oblast buněk, kde bude použito vlastní podmíněné formátování. Druhá oblast je oblast buněk s podmínkou (podmínka = shoda hodnot buněk) a formát buňky (styl fontu, barva pozadí buňky a zarovnání v buňce) bude použit pokud je podmínka splněna viz. obrázek. Zde je jasně vidět, že podmínek můžete mít kolik potřebujete.

Podmíněné formátování bez omezení

Otevřel jsem editor jazyka Vusial Basic Alt+F11. Kód jsem vložil do listu, na kterém má podmíněné formátování pracovat v Microsoft Excel Object. Vzhledem k tomu, že makro má být spuštěno při jakékoliv změně na listu, tak jsem vybral událost Worksheet Change.

Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim mRange As Range, mPodminka As Range, rng1 As Range, rng2 As Range 'definování oblasti buněk, kde bude formát použit Set mRange = Range("rngData") 'definování oblasti buněk s podmínkami a formáty Set mPodminka = Range("rngPodminka") If Union(ActiveCell, mRange).Address = mRange.Address Then For Each rng1 In mRange 'pokud je buňka prázdná, tak nuluji formáty If rng1.Formula = "" Then rng1.Interior.ColorIndex = Null rng1.Font.FontStyle = xlNormal rng1.Font.Color = Null rng1.HorizontalAlignment = xlGeneral End If For Each rng2 In mPodminka 'podmínka - kontrola zda hodnota buňky se shoduje s hodnotou 'buňky v oblasti podmínek If rng1.Formula = rng2.Value Then 'pokud je podmínka splněna, nastavuji formáty rng1.Interior.ColorIndex = rng2.Interior.ColorIndex rng1.Font.FontStyle = rng2.Font.FontStyle rng1.Font.Color = rng2.Font.Color rng1.HorizontalAlignment = rng2.HorizontalAlignment End If Next rng2 Next rng1 End If End Sub

Jak jsem uvedl, je zde použita jednoduchá podmínka a to je kontrola, zda se shodují hodnoty buněk. Zkušenější uživatelé si mohou upravit jak podmínku tak i formáty podle vlastních potřeb. Uvedené řešení si můžete stáhnout a vyzkoušet zde: Nejste přihlášen(a).