Oldal: 1 / 1
[Megoldva] Feltételes formázás - lekérdezése
Elküldve: 2022. augusztus 22., hétfő 7:35
Szerző: zabpeter
Sziasztok!
Segítséget szeretnék kérni.
Adott egy táblázat. Különféle feltételes formázások vannak beállítva.
Egy cellában szeretném lekérdezni, hogy egy adott cella aktuálisan melyik stílust kapta meg a feltételes formázás által.
Pl.: ha A1 cella értéke 3 - feltételes formázás: stílus neve: Piros (piros színt kap)
ha A1 cella értéke 5 - feltételes formázás: stílus neve: Kék (kék színt kap)
A2 cella = A1 cella stílusának neve (vagy piros vagy kék)
Akár függvény, akár makró is segítségemre lehet, köszönöm!
Re: Feltételes formázás - lekérdezése
Elküldve: 2022. augusztus 22., hétfő 9:56
Szerző: Zizi64
Nincs mód rá.
Csak az elsődlegesen alkalmazott Cella-Stílus (nevének és objektumának) lekérdezésére, és a kézzel (közvetlenül) alkalmazott tulajdonságok lekérdezésére van mód. Nem tudok arról sem, hogy a legújabb 7.4.0 verzióban ilyesmit megvalósítottak volna.
És SOHA ne használj formázási tulajdonságot valamiféle ADAT-ként. Csinálj helyette segédcellákat, amiben az adott (a vizsgálandó) cella állapotát szöveges, vagy számérték jelzi - akár ugyanazon (de cellaképlettel megvalósított) feltételrendszer mellett!
Re: Feltételes formázás - lekérdezése
Elküldve: 2022. augusztus 22., hétfő 9:58
Szerző: Zizi64
...elvileg a feltételes formázás képleteit le lehet kérdezni, de azt valahogy újra fel is kéne dolgoznod a makróddal a cella aktuális tartalmát alapul véve, mert azt sehol nem jelzi a program (az API-n keresztül), hogy mi lett a "látható, vizuális eredménye" a feltételrendszernek..
Re: Feltételes formázás - lekérdezése
Elküldve: 2022. augusztus 23., kedd 10:20
Szerző: Zizi64
Ötlet:
Használhatod a STYLE() függvényt a feltételes formázáshoz a beépített funkció helyett.
Ez esetben a mintafájlban megvalósítottak szerint több lehetőséged is van az alkalmazandó/alkalmazott stílus nevének megszerzésére.
Utólag makróval lehet kiolvasni (II. megoldás):
Kód: Egész kijelölése
Function MyGetCellStyleName1(MySheet as long, MyCol as long, MyRow as long , MyDummy as Variant) as string
Dim oDoc as object
Dim oSheets as object
Dim oSheet as object
Dim oCell as object
Dim sStyleName as string
oDoc = Thiscomponent
oSheets = oDoc.Sheets
oSheet = oSheets.getbyindex(MySheet-1)
oCell = oSheet.getCellByPosition(MyCol-1, MyRow-1)
sStyleName = oCell.CellStyle
MyGetCellStyleName1 = sStyleName
end function
A MyDummy paraméter azért kell, hogy a cellaérték változásakor a makrófüggvény is frissüljön. ("Simán" átadva csupán a cellaértéket az nem viszi magával a értéket tartalmazó cella adatait (pozícióját): ezért kell a munkalap, sor, oszlop adatokat is átadni.
De tulajdonképpen már az alkalmazása előtt tudható a feltételes stílus neve (I. megoldás)
De továbbra is fenntartom, hogy NAGY HIBA egy táblázatkezelőben a formázási tulajdonságokat megpróbálni adatokként kezelni.
Re: Feltételes formázás - lekérdezése
Elküldve: 2022. augusztus 23., kedd 21:09
Szerző: zabpeter
Ez a megoldás egyszerűen zseniális, nagyon szépen köszönöm!
Re: [Megoldva] Feltételes formázás - lekérdezése
Elküldve: 2022. augusztus 24., szerda 7:59
Szerző: Zizi64
Nyilván bonyolultabb esetben a Stílus alkalmazása is IF() függvények sorával történhet meg... (pl, ha nem csak egész számokat akarsz formázni, hanem különböző értéktartományokon belüli/kívüli állapotokat).