Hintergundfarbe als RGB auslesen und in Zelle schreiben

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Hintergundfarbe als RGB auslesen und in Zelle schreiben

Re: Hintergundfarbe als RGB auslesen und in Zelle schreiben

von Motley Glowv2 » Fr, 17.01.2020 13:04

Wooow, yea. Es funktioniert :-), vielen Dank. Mikelab

Der erste Code für Dummis! Ich habe einige probiert...

Also hier zusammengefasst.
(! Funktioniert nicht bei bedingten Formatierungen)
Um die Hintergrundfarbe von Open Office Calc Zellen / Feldern in RGB oder HEX anzuzeigen, benötigt man eine Funktion - Diese muss bei Makros eingetragen werde.
Das trägt man ein in Extras > Makros verwalten > Open Office Basic + Meine Makros + Standard > Neu

Unter End Sub kommen die Funktion.

Code: Alles auswählen

Sub Macro1

End Sub

Function ZellFARBERGB(Adresse) as string
	oZelle = ThisComponent.Sheets(0).getCellRangeByName(Adresse)
	iFarbe=oZelle.cellbackcolor
	if iFarbe>-1 then
		ZellFarbeRGB="R: " & red(iFarbe) & ", G: " & green(iFarbe) & ", B: " & blue(iFarbe)
	else
		ZellfarbeRGB="nicht definiert"
	end if
End Function

End Function
Zum Auslesen der Hintergrundfarbe schreibt man in die Celle, wie ein Formel, den Funktionsnamen mit Parameter (Also die Variable für den Farbwert und das auszulesenden Feld).

=ZELLFARBERGB(ZELLE("ADDRESS";A1))

Code: Alles auswählen

Function ZellFARBEHEX(Adresse)
	oZelle = ThisComponent.Sheets(0).getCellRangeByName(Adresse)
	iFarbe=ozelle.cellbackcolor
	if iFarbe>-1 then
		ZellFarbeHEX=hex(iFarbe)
	else
		ZellfarbeHEX="nicht definiert"
	end if
End Function
=ZELLFARBEHEX(ZELLE("ADDRESS";A1))

Vielen Dank

Gruß Guido

Re: Hintergundfarbe als RGB auslesen und in Zelle schreiben

von mikeleb » Fr, 17.01.2020 10:10

Hallo,
#NAME?
bedeutet, dass Calc die Funktion nicht kennt.
Mein Schreibfehler - korrekt ist:

Code: Alles auswählen

=ZELLFARBE(ZELLE("ADDRESS";A1))

Re: Hintergundfarbe als RGB auslesen und in Zelle schreiben

von Motley Glowv2 » Do, 16.01.2020 23:52

Ich bekomme es nicht hin - der Aufruf der Funktion wird doch als Formel in ein Feld eingetragen, oder? Makrosicherheit ist es auch nicht.

Folgende Fehlermeldungen stehen zur Auswahl:

Einfach Kopiert : #NAME?

Makro Ausführen benutzt:

Ein Scripting Framework Fehler trat während der Ausführung von Basic sript Standart.Module.ZellFARBE auf.

wrong numbers of parameters

Re: Hintergundfarbe als RGB auslesen und in Zelle schreiben

von mikeleb » Do, 16.01.2020 22:16

Hallo,
Entschuldigung, ich vergaß:

Code: Alles auswählen

=ZelleFarbe(Zelle("ADDRESS";A1))

Re: Hintergundfarbe als RGB auslesen und in Zelle schreiben

von Motley Glowv2 » Do, 16.01.2020 20:35

Hallo Mikelab,
und wie wende ich das an?
Ich habe den Code in Makro 1 kopiert

Dann =ZellFARBEHEX(A1) in eine Zelle eingegeben

Das Ergebnis ist BASIC-Laufzeitfehler. Es ist eine Exception aufgetreten Type: com.sun.star.uno.TuntimeException Message: .


Gruß Guido

Re: Hintergundfarbe als RGB auslesen und in Zelle schreiben

von mikeleb » Do, 16.01.2020 12:59

Hallo,

Code: Alles auswählen

Function ZellFARBE(Adresse) as string
	oZelle = ThisComponent.Sheets(0).getCellRangeByName(Adresse)
	iFarbe=ozelle.cellbackcolor
	if iFarbe>-1 then
		ZellFarbe="R: " & red(iFarbe) & ", G: " & green(iFarbe) & ", B: " & blue(iFarbe)
	else
		Zellfarbe="nicht definiert"
	end if
End Function
Das Makro liefert dir eine String mit den gewünschten Informationen. Beachte aber, dass es z. B. kein Ergebnis gibt, wenn die Hintergrundfarbe über eine bedingte Formatierung festgelegt wird.
Ergänzung: Ausgabe als Hex-Wert

Code: Alles auswählen

Function ZellFARBE(Adresse)
	oZelle = ThisComponent.Sheets(0).getCellRangeByName(Adresse)
	iFarbe=ozelle.cellbackcolor
	if iFarbe>-1 then
		ZellFarbe=hex(iFarbe)
	else
		Zellfarbe="nicht definiert"
	end if
End Function

Re: Hintergundfarbe als RGB auslesen und in Zelle schreiben

von Motley Glowv2 » Do, 16.01.2020 11:42

Vielen Dank, paljass. Die Funktion habe ich mir auch schon angesehen - ich komme leider auch nicht dahinter wie die Syntax funktioniert, insgesamt erscheint mir der Code komplexer.

Ja, das Makro Forum habe ich mittlerweile gesehen, wollte auch schon "umziehen" kann hier aber nicht Löschen.

Ich schreibe das mal ran.

Gruß
Guido

Re: Hintergundfarbe als RGB auslesen und in Zelle schreiben

von paljass » Do, 16.01.2020 08:24

Hallo Guido,
vielleicht hilft dir das hier weiter.

Gruß
paljass

Übrigens: Es gibt hier auch ein Forum für "Makros und allgemeine Programmierung", da wärst du wohl besser aufgehoben.

Hintergundfarbe als RGB auslesen und in Zelle schreiben

von Motley Glowv2 » Mi, 15.01.2020 20:53

Hallo,
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 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, wenn mir jemand weiter hilft.

Gruß
Guido

Nach oben