Automatická barva písma a výplň bez Bez barvy představují výchozí barvy pro písmo a pozadí buňky. Měli byste se na ně obracet, pokud „resetujete“ barvy ručně, bez užití nástroje Vymazat formáty. Obě jsou tu od nepaměti a obě nedělají, co mají.
Od automatické barvy písma bych čekal, že se bude přizpůsobovat tak, aby byla kontrastní vůči pozadí buňky, alespoň ve smyslu černá/bílá. Nějak se nepamatuji, že by to takto fungovalo. Byla, je, a bude černá.
Bílá barva pozadí buňky se od volby „bez barvy“ (NoFill) liší pouze v jedné podstatné věci – skrývá mřížku bez ohledu na její barvu. Tenhle klasický chyták „pomoc, zmizela mi mřížka“ je součástí snad každé výuky Excelu pro začátečníky. (Pozn. Jiná než automatická barva mřížky také změní typ čar mřížky na přerušovanou). Člověk by řekl „čert to vem“, jenže tím trable nekončí.
Excel 2007 nabídl pod VBA stupidní a hlavně nefunkční správu barev prostřednictvím vlastností Pattern a TintAndShade (viz článek Barvy ve VBA). Tento způsob se bohužel asi promítá i do vyhledávání s pomocí formátu v dialogu Najít.
Zkusme vyhledat buňky bez barvy ve výběru podle obrázku (D5 a D6 obsahují skutečně bílou barvu výplně, vnější buňky na pozadí barvu nemají).
Excel nebude schopen něco najít. Jestliže navolíme vyhledávání podle bílé barvy, vyhledá naopak vše – buňky s bílou barvou i bez barvy. No safra, kde je problém? Zkusme si zapnout Záznamník maker. Dočkáme se něčeho podobného:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | Sub ZaznamnikMakro() Application.FindFormat.Clear With Application.FindFormat.Interior .Pattern = xlNone .TintAndShade = 0 .PatternTintAndShade = 0 End With Selection.Find(What:="", After:=ActiveCell, LookIn:=xlFormulas, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, SearchFormat:=True).Activate End Sub |
A máme tu opět Pattern a TintAndShade. Sice to nemusí ještě značit, že s tímto stylem pracuje i dialog Najít, každopádně je to špatně. Takže zpátky na úplný začátek k barvám.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Sub BarvaPozadi() 'bila barva pozadi 'Color = 16777215 'ColorIndex = 2 'pozadi bez barvy 'Color = 16777215 'ColorIndex = -4142 Debug.Print ActiveCell.Interior.Color Debug.Print ActiveCell.Interior.ColorIndex End Sub |
1 2 3 4 5 6 7 8 9 10 11 | Sub PozadiBezBarvy() 'reset barevnosti pozadi bunky Selection.Interior.Color = xlNone 'xlNone ... -4142 Selection.Interior.ColorIndex = xlNone 'nebo Selection.Interior.ColorIndex = 0 End Sub |
A i tady vidíme buď špatně navrženou vlastnost Color, nebo přinejmenším bug. Vlastnost Color nerozlišuje bílou barvu a volbu „bez barvy“. Makro naštěstí můžeme snadno opravit do následující podoby:
1 2 3 4 5 6 7 8 9 10 11 12 | Sub ZaznamnikMakroOprava() With Application.FindFormat .Clear .Interior.ColorIndex = xlNone End With Selection.Find(What:="", After:=ActiveCell, LookIn:=xlFormulas, LookAt _ :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, SearchFormat:=True).Activate End Sub |
Abychom prošli/vybrali odpovídající buňky, museli bychom použít cyklus, případně také metodu Union. Nelze zneužít dialog Najít, Najít vše a CTRL+A.
Tento článek vznikl původně z jiného důvodu. Jak už jste si asi všimli, Excel 365 nabídl pro uživatelské rozhraní černý motiv.
Ptal jsem se sám sebe, proč Microsoft nechal tabulkovou část bílou. Sáhl jsem do normálního stylu buňky a změnil jak barvu písma, tak barvu pozadí. Jak ale již bylo řečeno, stokrát můžete změnit barvu mřížky v Možnostech, jestliže je pozadí buňky jiné, než bez barvy, mřížka se neukáže. A ano, Automatická barva písma vrátí textu černou barvu a volba Bez barvy bílou…
Vzpomněl jsem si, že podobu okna Excelu do jistí míry řeší vzhled, resp. motiv Windows.
Jde něco takového dnes ve Windows 10? Tento operační systém se dnes sám o tmavý motiv teprve pokouší (viz také článek 5 Killer Dark Themes for Windows 10. Výrazný posun by měl nastat na podzim 2018. Motivy dříve instalované například ze stránek Devian Art nejsou úplně funkční po posledních aktualizacích operačního systému.