Clever-Excel-Forum

Normale Version: Zellfarbe durch Zelle auslesen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
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.
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
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.
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))
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.
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.
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
Was ist da jetzt besser als die Variante von Tom(die man ja genauso auf Change umstellen könnte), Ralf?

Gruß, Uwe
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
(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
Seiten: 1 2