Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Farben werden mit HexDec in VBA falsch dargestellt

Forumthread: Farben werden mit HexDec in VBA falsch dargestellt

Farben werden mit HexDec in VBA falsch dargestellt
20.10.2023 08:19:09
MiSchi
Euch im Forum einen guten Morgen,

ich ordne per VBA-code einer Zelle mittels HexDec Angabe eine Füllfarbe zu.
Jedoch werden die Farben falsch dargestellt - nicht, dass nur die Farbe falsch angezeigt wird, sondern es wird die Farbe angezeigt die dem code von hinten nach vorne gelesen entspricht.
Setze ich händisch den HexCode der Farbe über Füllbarbe - weitere Füllfarbe - Benutzerdefiniert - in das Hexfeld ein, stimmt die angezeigte Farbe.
Ich müsste im in VBA statt RRGGBB die Farbe als BBGGRR schreiben - ist das so?

Wo ist der Fehler? Ich hoffe es kann mir jemand helfen.
Als Beispiel eine Farbe:
Sub test()


With Worksheets("Tabelle1").Range("M1")
farbe = "&h" & "ff0000"
.Interior.Color = farbe
End With

With Worksheets("Tabelle1").Range("n1")
farbe = "&h" & "0000ff"
.Interior.Color = farbe
End With


End Sub


Viele Grüße
MiSchi
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Farben werden mit HexDec in VBA falsch dargestellt
20.10.2023 08:34:16
Volti
Hallo MiSchi,
Das ist so. Ist auch in HTML so.
Die Hex-Darstellung ist ja eine Zahl, von links gelesen ist der kleinste Anteil rot. (rechts)
Die andere Schreibweise RGB() sind Einzelkomponenten. Hier wird, wenn man so will, auch der kleinste Anteil rot zuerst genannt.

Gruß Karl-Heinz
Anzeige
mache den Test
20.10.2023 15:17:29
Yal
Hallo MiSchi,

Die Frage hat meine Neugierigkeit geweckt und ich musste meine Wissenstand selbst prüfen. Ich teile einfach mit, wie ich die Farbenbeschreibung nach RGB getestet habe (Falls für irgendjemand, heute oder später, vom Interesse ist).
RGB(..) ist eigentlich nur eine Multiplikation: RGB(r, g, b) = r + 256 * g + 256^2 * b

Sub Test()

Dim v
v = RGB(255, 0, 0): Debug.Print Hex(v), v
v = RGB(0, 255, 0): Debug.Print Hex(v), v
v = RGB(0, 0, 255): Debug.Print Hex(v), v
End Sub



Es heisst zwar R dann G dann B, aber Rot, obwohl vorn, ist der "kleinste Anteil".

VG
Yal
Anzeige
AW: Farben werden mit HexDec in VBA falsch dargestellt
20.10.2023 08:39:01
Volti
Nachtrag, bei der dritten Farbangabemöglichkeit, einer dezimalen Zahl ist 255 auch rot.
Blau eine deutlich größere Zahl.

Gruß KH
Besten Dank Karl-Heinz!
20.10.2023 08:56:11
MiSchi
Viele Grüße
MiSchi
Anzeige
Anzeige

Infobox / Tutorial

Farben mit HexDec in VBA korrekt darstellen


Schritt-für-Schritt-Anleitung

Um Farben in Excel mittels VBA korrekt über die HexDec-Darstellung zu setzen, solltest Du die RGB-Funktion verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf „VBAProject (DeineDatei)“ und wähle „Einfügen“ > „Modul“.

  3. Gib den folgenden Code ein:

    Sub SetzeFarben()
       With Worksheets("Tabelle1").Range("M1")
           .Interior.Color = RGB(255, 0, 0) ' Rot
       End With
    
       With Worksheets("Tabelle1").Range("N1")
           .Interior.Color = RGB(0, 0, 255) ' Blau
       End With
    End Sub
  4. Schließe den VBA-Editor und führe das Makro aus, um die Farben zu setzen.


Häufige Fehler und Lösungen

Ein häufiger Fehler bei der Verwendung von HexDec in VBA ist, dass die Farben nicht korrekt angezeigt werden. Dies liegt daran, dass die Hex-Darstellung von hinten nach vorne gelesen wird. Hier sind einige Lösungen:

  • Falsche Hex-Darstellung: Wenn Du einen Farbcode wie &HFF0000 verwendest, wird er als 00FF00 interpretiert. Um dies zu vermeiden, benutze die RGB-Funktion.
  • Falsches Arbeitsblatt: Stelle sicher, dass Du das richtige Arbeitsblatt angibst. Verwende Worksheets("DeinArbeitsblatt") anstelle von Worksheets(1).

Alternative Methoden

Falls Du die Farben in einem anderen Format nutzen möchtest, kannst Du auch die dezimale Zahl verwenden. Hier ist ein Beispiel:

Sub SetzeFarbenDezimal()
    With Worksheets("Tabelle1").Range("M1")
        .Interior.Color = 255 ' Rot
    End With

    With Worksheets("Tabelle1").Range("N1")
        .Interior.Color = 16711680 ' Blau (dezimale Darstellung)
    End With
End Sub

Praktische Beispiele

Hier sind einige praktische Beispiele für die Verwendung von Farben in VBA:

Sub BeispielFarben()
    ' Beispiel für verschiedene Farben
    With Worksheets("Tabelle1").Range("A1")
        .Interior.Color = RGB(255, 0, 0) ' Rot
    End With

    With Worksheets("Tabelle1").Range("A2")
        .Interior.Color = RGB(0, 255, 0) ' Grün
    End With

    With Worksheets("Tabelle1").Range("A3")
        .Interior.Color = RGB(0, 0, 255) ' Blau
    End With
End Sub

Diese Beispiele zeigen, wie Du verschiedene Farben in Zellen einfügen kannst, ohne die HexDec-Darstellung zu verwenden.


Tipps für Profis

  • Farben speichern: Du kannst Farben in Variablen speichern, um sie mehrfach zu verwenden:

    Dim farbeRot As Long
    farbeRot = RGB(255, 0, 0)
    
    With Worksheets("Tabelle1").Range("A1")
      .Interior.Color = farbeRot
    End With
  • Benutzerdefinierte Farben: Du kannst auch benutzerdefinierte Farben erstellen, indem Du die ColorIndex-Eigenschaft verwendest.


FAQ: Häufige Fragen

1. Warum werden meine Farben in VBA nicht korrekt angezeigt?
Das liegt daran, dass die Hex-Darstellung von hinten nach vorne gelesen wird. Verwende stattdessen die RGB-Funktion.

2. Kann ich die HexDec-Darstellung weiterhin verwenden?
Ja, aber Du musst sicherstellen, dass Du die Farben in der richtigen Reihenfolge angibst (BBGGRR).

3. Wie kann ich Farben dynamisch ändern?
Du kannst die RGB-Werte in Variablen speichern und diese dann nach Bedarf ändern, um verschiedene Farbzusammenstellungen zu verwenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige