Registriert seit: 03.11.2022
Version(en): 2019
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
Registriert seit: 12.04.2014
Version(en): Office 365
04.02.2024, 09:13
(Dieser Beitrag wurde zuletzt bearbeitet: 04.02.2024, 09:13 von Crazy Tom.
Bearbeitungsgrund: überflüssiges wech
)
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
Registriert seit: 11.04.2014
Version(en): Office 365
04.02.2024, 11:34
(Dieser Beitrag wurde zuletzt bearbeitet: 04.02.2024, 12:26 von Klaus-Dieter.)
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
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
04.02.2024, 11:50
(Dieser Beitrag wurde zuletzt bearbeitet: 04.02.2024, 12:12 von RPP63.)
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! 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. Zelle | Formel | 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)
Registriert seit: 11.04.2014
Version(en): Office 365
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
Registriert seit: 03.11.2022
Version(en): 2019
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
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
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 | A | B | C | D | 1 | R | G | B | Farbwert | 2 | 32 | 40 | 108 | 7088160 |
Zelle | Formel | 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 | A | B | C | D | E | 1 | R | G | B | Farbwert | | 2 | 32 | 40 | 108 | 7088160 | |
Zelle | Formel | 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)
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Was ist da jetzt besser als die Variante von Tom(die man ja genauso auf Change umstellen könnte), Ralf?
Gruß, Uwe
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
04.02.2024, 15:40
(Dieser Beitrag wurde zuletzt bearbeitet: 04.02.2024, 15:41 von RPP63.)
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)
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
(04.02.2024, 15: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
|