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)
GetCellStyle.ods
(11.85 KiB) Letöltve 110 alkalommal.

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).