Excel+VBA – odlišení buněk s vzorcem

Možná to znáte – máte Excelovou tabulku a potřebujete mít sloupec, kde hodnoty počítáte nějakým vzorcem, ale zároveň je někdy potřebujete přepsat fixní hodnotou. Jenže pak se třeba změní kurz či něco podobného a vy potřebujete nějak snadno identifikovat buňky s fixní hodnotou – můžete je dát najít (CTRL+G / Special / Constants), ale to je…

Uveřejněno

Autor

Značky:

Možná to znáte – máte Excelovou tabulku a potřebujete mít sloupec, kde hodnoty počítáte nějakým vzorcem, ale zároveň je někdy potřebujete přepsat fixní hodnotou.

Jenže pak se třeba změní kurz či něco podobného a vy potřebujete nějak snadno identifikovat buňky s fixní hodnotou – můžete je dát najít (CTRL+G / Special / Constants), ale to je někdy nepohodlné, raději byste takové buňky měli rovnou nějak odlišené.

Nebo máte nějakou sdílenou tabulku a potřebujete přehledně najednou identifikovat, které buňky jsou počítány automaticky a která jsou k ručnímu vyplnění …

Vhodným způsobem, jak naformátovat nějaké buňky automaticky na základě splnění nějaké podmínky je podmíněné formátování (Home / Conditional formating) – zde můžete nadefinovat vzorec a formát buňky, který bude použit v případě, že výsledkem vzorce je kladná odpověd.

Takže se nabízí testovat, zda-li daná buňka obsahuje vzorec, jenže Excel nemá žádnou vestavěnou funkci, která by říkala, jestli je buňka konstanta či vzorec. Proto si takovou funkci musíte nejdříve přidat, a to pomocí skriptovacího jazyka VBA (co je to VBA a jak se s ním dělá je mimo záběr tohoto článku, vysvětlím případně jindy).

Public Function HASFORMULA(ByVal cell As Range) As Boolean
 ' Returns whether the cell contains a formula.
 On Error Resume Next
 HASFORMULA = cell.HASFORMULA
End Function

Tahle krátká uživatelská funkce zajistí, že když pak napíšete třeba do buňky B1 vzorec =HASFORMULA (A1), tak vám vrátí TRUE v případě, že v A1 je vzorec a FALSE když nikoliv. Tenhle vzorec pak můžete použít třeba právě v tom podmíněném formátování.

Nové články sem přidávám porůznu, tak jestli nechcete, aby vám něco uniklo, přidejte si můj feed do RSS čtečky, sledujte můj Twitter, Facebook a LinkedIn, případně si nechte nové příspěvky posílat mailem (žádný spam!)