Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1956to1960
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Hex Farbwert Invertierung

Hex Farbwert Invertierung
08.12.2023 13:16:05
Stefan
Hallo Excel Profis,

ich habe ein kleines Problem, welches ich in Einzelteilen mithilfe von Google lösen konnte, aber mir fehlt das Wissen es in eine Funktion zu bringen ...

Beispiel:
In meiner Excel Mappe stehen Hexadezimale Farbwerte z. B. #D50A22 - von diesem Wert sollte die aktive Zelle in dieser Hintergrundfarbe gefärbt werden und gleichzeitig der invertierte (ich hoffe das ist richtig ausgedrückt) Farbwert - in diesem Beispiel wäre das #2AF5DD als Schriftfarbe in der aktiven Zelle genutzt werden.

Die "Invertierte Farbe" ermittle ich durch die Umrechnung des Hex Wertes in Binär z. B. 0000110101010000101000100010 und dann mit der Wechsel Funktion die Invertierung z. B. 1111001010101111010111011101 (also für jede 0 eine 1 und für jede 1 eine 0). Den Wert dann wieder in Hex gewandelt ergibt den für mich invertierten Farbwert.

Bisheriger Lösungsansatz:

Eine erstellte Funktion um Hex in Bin umzuwandeln:

Public Function HEX2BIN(strHEX As String) As String
Dim charac As Long, indexes As Long, i As Long
Dim zeros As String * 4
For charac = 1 To Len(strHEX)
indexes = 0
zeros = "0000"
i = Val("&H" & Mid$(strHEX, charac, 1))
While i > 0
Mid$(zeros, 4 - indexes, 1) = i Mod 2
i = i \ 2
indexes = indexes + 1
Wend
HEX2BIN = HEX2BIN & zeros & ""
Next
HEX2BIN = RTrim$(HEX2BIN)
End Function

Eine Formel um den Bin Wert zu invertieren:
=WECHSELN(WECHSELN(WECHSELN(A1;0;2);1;0);2;1)

Und letztendlich noch eine Public Sub die beim Wechsel der aktiven Zelle prüft und färbt:

If (Left(ActiveCell.Text, 1) = "#" And Len(ActiveCell.Text) = 7) Then
ActiveCell.Interior.Color = WorksheetFunction.Hex2Dec(Mid$(ActiveCell.Text, 6, 2) & Mid$(ActiveCell.Text, 4, 2) & Mid$(ActiveCell.Text, 2, 2))
ActiveCell.Font.Color = WorksheetFunction.Hex2Dec(Mid$(ActiveCell.Text, 2, 2) & Mid$(ActiveCell.Text, 4, 2) & Mid$(ActiveCell.Text, 6, 2))
End If

Habe als Füller mal die Zeile mit der Schriftfarbe eingesetzt, aber das Ergebnis ist nicht die invertierte Farbe.

Wäre es irgendwie möglich diese Hex2Bin Funktion und den Wechsel Befehl (oder gar ein ganz anderer Weg) in diese Public Sub einzubauen?

Ich hoffe ich habe es gut genug formuliert und hoffe auf hilfreiche Tipps.

Danke im Voraus.

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hex Farbwert Invertierung
08.12.2023 13:49:44
Fennek
Hallo,

ein Vorschlag:


Sub Hx_invert()
Dim Hx As String, R As Integer, G As Integer, B As Integer

Hx = "D50A22"
R = Val("&H" & Left(Hx, 2))
G = Val("&H" & Mid(Hx, 2, 2))
B = Val("&H" & Right(Hx, 2))

Cells(1, 1).Interior.Color = RGB(255 - R, 255 - G, 255 - B)
End Sub


mfg
AW: Hex Farbwert Invertierung
08.12.2023 14:19:27
Stefan
Danke Fennek

das ist grundsätzlich ein guter Anfang, da hatte sich aber beim Start für den Grünton ein Fehler eingeschlichen. Aber den hab ich selbst gefunden und es funktioniert erstmal.
Muss es noch in die Funktion unf auf die aktive Zelle bringen, aber das sollte machbar sein.

Vielen Dank.
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige