gelöst: Farbe bei bedingter Formatierung auslesen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

gelöst: Farbe bei bedingter Formatierung auslesen

Beitrag von erikafuchs »

Hallo Leute
ein schönes Neues Jahr wünsche ich und habe schon wieder mal eine originelle Frage:
Wie man die Farbe einer Tabellenzelle ausliest weiß ich, kann man die Farbe auch bei einer bedingten Formatierung auslesen?
(Alternativ würde es mir auch genügen, die Farbe aus der entsprechenden Formatvorlage auszulesen.Bis jetzt kann ich das nur umständlich über den angezeigten Namen und diesen dann über die Eigenschaft eines Feldes bei den Dialogen auslesen - das muss doch einfacher gehen!))
Grüße Pit
Zuletzt geändert von erikafuchs am Di, 07.01.2020 14:54, insgesamt 1-mal geändert.
mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: Farbe bei bedingter Formatierung auslesen

Beitrag von mikeleb »

Hallo Pit,
angenommen oCell sei die betrachtete Zelle. Dann liefert dir der folgende Code im Prinzip die Hintergrundfarbe:

Code: Alles auswählen

	oCond=oCell.ConditionalFormat
	if oCond.Count>0 then
		sStyle=oCond.getByIndex(0).StyleName
		oStyle=oDoc.StyleFamilies.getByName("CellStyles").getByName(sStyle)
		iColor=oStyle.CellBackColor
	else
		iColor=oCell.CellBackColor
	end if
"Im Prinzip" weil,
1) Wenn für die Zelle (mindestens) eine bedingte Formatierung vorliegt, wird nur die Vorlage der 1. Bedingung ausgelesen und darin die festgelegte Hintergrundfarbe. Wenn keine Bedingungen vorliegen, dann die Hintergrundfarbe der Zelle.
Wenn die Hintergrundfarbe nicht extra festgelegt ist ("automatisch"), dann erhältst du den Wert -1.
2) Welche Hintergrundfarbe die Zelle gerade hat erfährst du damit nicht. Dazu müsstest du wissen, ob die Bedingung erfüllt ist oder nicht. Bisher ist mir nicht bekannt, ob bzw. wie man das per Makro herausfindet.
Gruß,
mikeleb
erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: Farbe bei bedingter Formatierung auslesen

Beitrag von erikafuchs »

Hallo mikeleb,
Danke mal wieder. Sieht gut aus und die Bedingung kann ich auslesen, das sollte klappen. Das probiere ich morgen aus.
So long
erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: Farbe bei bedingter Formatierung auslesen

Beitrag von erikafuchs »

Funktioniert prima. Danke!
Motley Glowv2
Beiträge: 6
Registriert: Di, 14.01.2020 13:25

Re: gelöst: Farbe bei bedingter Formatierung auslesen

Beitrag von Motley Glowv2 »

Hallo,
Das ist genau mein Thema, darf ich um zwei Tips bitten?

Ich bin das erste Mal in der Verlegenheit ein Makro zu benötigen, ich habe mir schon einige angesehen - aber ich verstehe es nicht.
Diese Funktion ist schon sehr dicht dran -
nur ich kann es nicht bedienen und ich möchte nicht auf Farben prüfen, sondern brauche die RGB oder HEX Werte
Der Aufruf dazu ist wie folgt
=FARBE(ZELLE("ADDRESS";A1);255;0;0)*WENN(B1="A";1;0)

klappte bei mir leider nicht, immerhin kam zumindest eine 0 als Ergebniss
(ich hab bei meiner Suche nach Funktionen > 6 verschiedene Fehlermeldungen bekommen)

Code: Alles auswählen

Function FARBE(Adresse,R,G,B)
zelle = ThisComponent.Sheets(0).getCellRangeByName(Adresse)
If zelle.CellBackColor(R,G,B)=RGB(R,G,B) Then 
      FARBE=1
   else
      FARBE=0
End if
End Function
Die Funktion, welche ich gerne hätte, liest fie Farbe von der Schrift und die Hintergrundfarbe eine anzugeben Zelle und schreibt den Wert in die Zelle mit dem Aufruf.

Also eigentlich muss nur auf die richtige Art und Weise die If Funktion entfernt werden?
Und die richtige Formel zum Aufruf braucht es auch.

Wie geht das? Wurde mich sehr freuen, würde mich sehr freuen zu wissen, wie es ohne If Funktion aussieht.
Und dann noch wie ich die Funktion auslesen kann?

Also diese und die von mikeleb.

Ich hoffe dann zu mehr zu verstehen.


Gruß
Guido
Antworten