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
gelöst: Farbe bei bedingter Formatierung auslesen
Moderator: Moderatoren
-
- ******
- Beiträge: 690
- Registriert: Di, 13.02.2007 17:38
- Wohnort: Büttelborn
gelöst: Farbe bei bedingter Formatierung auslesen
Zuletzt geändert von erikafuchs am Di, 07.01.2020 14:54, insgesamt 1-mal geändert.
Re: Farbe bei bedingter Formatierung auslesen
Hallo Pit,
angenommen oCell sei die betrachtete Zelle. Dann liefert dir der folgende Code im Prinzip die Hintergrundfarbe:
"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.
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
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
mikeleb
-
- ******
- Beiträge: 690
- Registriert: Di, 13.02.2007 17:38
- Wohnort: Büttelborn
Re: Farbe bei bedingter Formatierung auslesen
Hallo mikeleb,
Danke mal wieder. Sieht gut aus und die Bedingung kann ich auslesen, das sollte klappen. Das probiere ich morgen aus.
So long
Danke mal wieder. Sieht gut aus und die Bedingung kann ich auslesen, das sollte klappen. Das probiere ich morgen aus.
So long
-
- ******
- Beiträge: 690
- Registriert: Di, 13.02.2007 17:38
- Wohnort: Büttelborn
Re: Farbe bei bedingter Formatierung auslesen
Funktioniert prima. Danke!
-
- Beiträge: 6
- Registriert: Di, 14.01.2020 13:25
Re: gelöst: Farbe bei bedingter Formatierung auslesen
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)
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
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
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