Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Zellfarbe durch Zelle auslesen
#1
Hallo zusammen,
ich habe da mal wieder ein Problem, möchte gerne, wenn A1 >0 die RGB-Farbwerte aus B1 zur Färbung von C1 führt. Also, A1 steht die Zahl 5, in B1 steht 32,40,108 dann soll C1 in Royalblau gefärbt sein. Kann man so etwas über VBA generieren? Mit dem Makro-Rekorder kann ich keinen Bezug auf eine Zelle herstellen, habe ich schon probiert, im WWW habe ich auch nichts gefunden, ich bin der Einzige, der so etwas braucht.
Vielleicht gibt es ja eine Möglichkeit.

Nochmals vielen Dank

Gruß

Karlheinz
Antworten Top
#2
moin

eine Möglichkeit

Code:
Sub machs_bunt()
    Dim strText As String
    Dim Einz() As String
    strText = Range("B1").Value
    Einz = Split(strText, ",")
    Range("C1").Interior.Color = RGB(Einz(0), Einz(1), Einz(2))
End Sub

mfg Tom
Antworten Top
#3
Hallo,

da reicht ein Einzeiler:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Cells(1, 1).Value > 0 Then Cells(1, 3).Interior.Color = Cells(1, 2).Interior.Color
End Sub

Natürlich könnte man das noch so festlegen, dass über eine Intersect-Anweisung nur auf Eingaben in bestimmten Bereichen reagiert wird.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#4
Moin!
Das hast Du falsch verstanden, Klaus-Dieter!
In B1 steht der Text 32,40,108
C1 soll sich jetzt RGB(32, 40, 108) färben, wenn A1 nicht leer ist.

@Karl-Heinz 16:
Royalblau ist royalblue ist Königsblau.
Königsblau ist Schalke.
(schreibt ein derzeit geplagter Fan des S04)
Aber ich schweife ab! Wink

Gruß Ralf

Übrigens:
Mir ist bewusst, dass der TE Excel 2019 hat.
Ab Excel 2021/365/Online kann man sich den Farbwert auch direkt mit einer Formel aus dem Text errechnen.
Dies könnte man als Zuweisung an Zelle.Interior.Color nutzen.

AB
132,40,1087088160

ZelleFormel
B1=SUMME(TEXTTEILEN(A1;;",")*256^SEQUENZ(3;;0))
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#5
Hallo Ralf,

Zitat:Das hast Du falsch verstanden, Klaus-Dieter!
 
stimmt, da hatte ich nicht weit genug gelesen. Wer macht denn auch solche Sachen? Mit RGB habe ich gefühlt schon seit Jahrzehnten nichts mehr gearbeitet.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#6
Hallo RPP63, Klaus-Dieter und Crazy Tom,
Vielen Dank für eure Hilfe, ihr seid die Größten. Bei mir funktioniert der Code von Crazy Tom wunderbar. Bei dem Code von Klaus-Dieter passiert gar nichts, aber das wurde ja, dank RPP63, schon festgestellt. 
@RPP63 Wenn ich natürlich Excel 2021 hätte, wäre wahrscheinlich noch mehr einfacher, habe ich aber leider nicht.

Nochmals vielen Dank

Gruß

Karlheinz
Antworten Top
#7
Dann solltest Du Dich vom kommagetrennten Text trennen und separate Spalten für R, G und B nehmen.
Den Farbwert nimmst Du dann aus D2
ABCD
1RGBFarbwert
232401087088160

ZelleFormel
D2=A2+B2*256+C2*256^2

Dann brauchst Du auch kein allgemeines Makro, sondern kannst einfach ein Ereignismakro automatisch starten lassen:
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
  If .Column < 4 Then
    Cells(.Row, 5).Interior.Color = Cells(.Row, 4)
  End If
End With
End Sub

ABCDE
1RGBFarbwert
232401087088160

ZelleFormel
D2=A2+B2*256+C2*256^2
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#8
Was ist da jetzt besser als die Variante von Tom(die man ja genauso auf Change umstellen könnte), Ralf?

Gruß, Uwe
Antworten Top
#9
Nix ist "besser", Uwe.
Sinnvoller ist es aber allemal, R, B und G in einzelne Zellen zu schreiben.
Ob man dann den Farbwert mittels VBA-Funktion RGB() oder mittels einfacher Rechnung ermittelt, ist einerlei.
Ich persönlich fand es interessant,  RGB() mittels aktueller Excel-Funktionen nachzubilden.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#10
(04.02.2024, 14:40)RPP63 schrieb: Ich persönlich fand es interessant,  RGB() mittels aktueller Excel-Funktionen nachzubilden.

Welche wäre das in Deinem Beispiel, Ralf?

Gruß, Uwe
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste