
VBA Excel 2007 - podmienené formátovanie
Ahoj chlapi,
prosím o radu:
v stĺpci mám bunky podfarbené komplikovanými podmienenými formátmi na základe vzorcov.
Potrebujem vo VBA v cykle prejsť bunkami tohto stĺpca a zistiť, ktoré z nich boli určitými spôsobmi podmienene podfarbené.
Napr. zistiť, ktorá bunka bola podmienene prefarbená na modro alebo červeno (pričom farieb podmienených formátov je viac).
Ono by sa v kóde dali opätovne preveriť podmienky, za ktorých boli bunky daným spôsobom podfarbované, ale ako vravím, podmienky sú komplikované a preto by mi bolo oveľa jednoduchšie prejsť bunkami a zistiť, na akú farbu boli podmieneným formátom prefarbené.
Ani za ten svet neviem kódom vytiahnuť farbu bunky dosiahnutú podmieneným formátovaním...
Díky
R
Bohužel, ve VBA je dostupná pouze základní barva buňky, nikoli barva dosažená podmíněným formátováním.
Pokud si vzpomínám, před pár lety jsem to taky potřeboval vyřešit, nakonec jsem skončil u přímého vyhodnocení podmínky (naštěstí byla jednoduchá).
Něco jsem našel zde: CFColors.htm, ale netestoval jsem to.
Ďakujem. Skúsim kód toho linku nejak analyzovať.
Skúšal som zaznamenávať záznamníkom makier nadefinovanie farieb podmieneným formátovaním a vyzeralo to,
že Msgbox Selection.FormatConditions(1).Interior.Color by mal dať odpoveď.
Do toho však ešte vstúpilo komplikované definovanie formátov buniek počnúc Excelom 2007 (theme,pattern, colorindex, color, ink...), takže som zatiaľ bezradný...
Ak nenájdem nejakú fintu, asi budem teda musieť opätovne kódom preverovať podmienky...
Ak by niekto vedel ešte poradiť, poteší ;)
R
Do okna Immediate v editoru VBA si napiš
?activecell.Interior.Color
nebo
?activecell.Interior.ColorIndex
Siki ďakujem, ale nefunguje.
Tak ako písal Zdenál, toto ti vráti farbu, ktorú má bunka "pod" farbou nanesenou podmieneným formátovaním (t.j. akú má bunka pred tým, než sa prefarbí na základe podmienky)
Nakoniec som to vyriešil tak, ako som písal vyššie, t.j. vo VBA som opätovne preveril podmienky, ktoré v hárku spôsobujú podmienené prefarbenie buniek. Podarilo sa mi podmienky pomocou premenných vo VBA zminimalizovať, takže výsledný kód je jednoduchý.
Ďakujem za ochotu
R