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

Bedingte Formatierungen in ein Excelblatt m. RGB Farben

Forumthread: Bedingte Formatierungen in ein Excelblatt m. RGB Farben

Bedingte Formatierungen in ein Excelblatt m. RGB Farben
22.07.2024 07:39:10
Matthias
Hallo,

eigentlich sind bedingte Formatierungen ganz praktisch und gut. Ich habe für unsere gemeinsamen Planungen eine Liste mit 10 bedingten Formatierungsregeln auf dem gesamten Blatt. Dann sieht es gut und übersichtlich aus. Leider "zerdeppert" diese immer wieder durch "Kopier- und Verschiebeaktionen" von den Anwendern.

Ich habe schon den Ansatz verfolgt, Änderungen an den bedingten Formatierungen "irgendwie zu verhindern/zu sperren"; das klappt auch nicht so wie gedacht!
Nun wäre ich mit Holzhammermethode hergegangen, beim Öffnen der Datei ein kurzes VBA loslaufen zu lassen, welches knallhart alle bedingten Formatierungen löscht, und diese wieder komplett sauber reinschreibt. Das klappt soweit auch prima. Hab mal den ersten Wurf hier her kopiert, bitte nicht auslachen, ist noch recht "hölzern".

Was ich nun nicht hinbekommen habe, auch keine Doku gefunden habe:

Es wäre klasse, wenn man auch bedingte Formatierungen, die z.B. einen Zellenhintergrund im RGB Farb Modus ausfüllen können.
(nicht nur die "classic Excel Farbcodes")

Hierzu habe ich weder im Netz was gefunden, noch habe ich durch diverse Versuche hinbekommen.
Hat wer das schon mal hinbekommen, oder hat diesbezüglich Erfahrungen.

Danke Euch!




' *********************************************************************************************************************
' Bedingte Formatierung im Kalender zurückschreiben, aus Parameter_BF auslesen
' *********************************************************************************************************************

Sub BedingteFormatierungSchreiben()


' *********************************************************************************************************************
' um dieses Workbook geht´s
' *********************************************************************************************************************
Set Roadmap = ThisWorkbook.Worksheets("24") ' Der MB Kalender


Dim rngC As Range

Dim Bereich As String
Dim Formel As String
Dim Fuellfarbe As Long
Dim Fontfarbe As Integer
Dim Fontstyle As Boolean

Dim ZeileBF As Integer

On Error Resume Next

' *********************************************************************************************************************
' zuerst alle bedingten Formatierungen löschen
' *********************************************************************************************************************


For Each rngC In ActiveSheet.UsedRange
rngC.FormatConditions.Delete
Next

' *********************************************************************************************************************
' Schleife lese bedingte Formatierung und erstelle sie
' *********************************************************************************************************************
For ZeileBF = 1 To ThisWorkbook.Worksheets("Parameter_BF").Cells(Rows.Count, 1).End(xlUp).Row

Bereich = ThisWorkbook.Worksheets("Parameter_BF").Cells(ZeileBF, 1).Value ' aus Spalte A lesen
Formel = ThisWorkbook.Worksheets("Parameter_BF").Cells(ZeileBF, 3).Value ' aus Spalte C lesen

Fuellfarbe = ThisWorkbook.Worksheets("Parameter_BF").Cells(ZeileBF, 2).Interior.ColorIndex ' aus Spalte B die Formatierung holen
Fontfarbe = ThisWorkbook.Worksheets("Parameter_BF").Cells(ZeileBF, 2).Font.ColorIndex
Fontstyle = ThisWorkbook.Worksheets("Parameter_BF").Cells(ZeileBF, 2).Font.Bold

Set rngC = ActiveSheet.UsedRange.FormatConditions(ZeileBF).AppliesTo

With ActiveSheet.Range(Bereich).FormatConditions.Add(xlExpression, Formula1:=Formel)

With .Interior
.ColorIndex = Fuellfarbe
End With

With .Font
.ColorIndex = Fontfarbe
.Bold = Fontstyle
End With

End With

Next ZeileBF


' *********************************************************************************************************************
' kurze Meldung
' *********************************************************************************************************************
MsgBox ("Leute, ich habe meinen Job erledigt!")

' *********************************************************************************************************************
' Bedingte Formatierung im Kalender zurückschreiben, aus Parameter_BF auslesen
' *********************************************************************************************************************
End Sub
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bedingte Formatierungen in ein Excelblatt m. RGB Farben
22.07.2024 08:28:44
volti
Hallo Matthias,

RGB-Farben werden mit Color=RGB (r,g,b) erzeugt.

Hier ein (ungetetester) Vorschlag.
' *********************************************************************************************************************

' Bedingte Formatierung im Kalender zurückschreiben, aus Parameter_BF auslesen
' *********************************************************************************************************************

Sub BedingteFormatierungSchreiben()


' *********************************************************************************************************************
' um dieses Workbook geht´s
' *********************************************************************************************************************
Set Roadmap = ThisWorkbook.Worksheets("24") ' Der MB Kalender


Dim rngC As Range

Dim Bereich As String
Dim Formel As String
Dim Fuellfarbe As Long
Dim Fontfarbe As Integer
Dim Fontstyle As Boolean
Dim WS As Worksheet

Dim ZeileBF As Integer

On Error Resume Next

' *********************************************************************************************************************
' zuerst alle bedingten Formatierungen löschen
' *********************************************************************************************************************


For Each rngC In ActiveSheet.UsedRange
rngC.FormatConditions.Delete
Next

' *********************************************************************************************************************
' Schleife lese bedingte Formatierung und erstelle sie
' *********************************************************************************************************************
Set WS = ThisWorkbook.Worksheets("Parameter_BF")
WS.Cells(ZeileBF, 2).Font.Color = RGB(255, 0, 0) ' rot
WS.Cells(ZeileBF, 2).Interior.Color = RGB(210, 210, 210) ' hellgrau

For ZeileBF = 1 To WS.Cells(Rows.Count, 1).End(xlUp).Row

Bereich = WS.Cells(ZeileBF, 1).Value ' aus Spalte A lesen
Formel = WS.Cells(ZeileBF, 3).Value ' aus Spalte C lesen

Fuellfarbe = WS.Cells(ZeileBF, 2).Interior.Color ' aus Spalte B die Formatierung holen
Fontfarbe = WS.Cells(ZeileBF, 2).Font.Color
Fontstyle = WS.Cells(ZeileBF, 2).Font.Bold

Set rngC = ActiveSheet.UsedRange.FormatConditions(ZeileBF).AppliesTo

With ActiveSheet.Range(Bereich).FormatConditions.Add(xlExpression, Formula1:=Formel)

With .Interior
.ColorIndex = Fuellfarbe
End With

With .Font
.ColorIndex = Fontfarbe
.Bold = Fontstyle
End With

End With

Next ZeileBF


' *********************************************************************************************************************
' kurze Meldung
' *********************************************************************************************************************
MsgBox ("Leute, ich habe meinen Job erledigt!")

' *********************************************************************************************************************
' Bedingte Formatierung im Kalender zurückschreiben, aus Parameter_BF auslesen
' *********************************************************************************************************************
End Sub


Gruß
Karl-Heinz
Anzeige
AW: Bedingte Formatierungen in ein Excelblatt m. RGB Farben
22.07.2024 10:26:16
daniel
Hi
mit .Interior.Color = RGB-Farbwert
kannst du jede beliebige RGB-Farbe verwenden.

die Farbwerte für "Standardfarben" sind jetzt in Konstanten hinterlegt, so dass man mehrere Möglichkeiten hat, die Farbe zuzuweisen:
.Interior.Color = 255 '--- als einfache Zahl

.Interior.Color = RGB(255, 0, 0) '--- über die RGB-Funktion berechnet
.Interior.Color = vbRed '--- Verwendung einer der hinterlegten Farbkonstanten
.InteriorColor = &h0000ff '--- als einfach Zahl, aber im HEX-Darstellung (je zwei Stellen für R, G und B)


der ColorIndex ist noch ein Überbleibsel aus der 2003er-Ära, als Excel maximal 56 verschiedene Farben in einer Datei verwalten konnte.
dieser ist nur noch vorhanden, damit alte Makros nicht umgeschrieben werden müssen sondern weiter verwendet werden können.


Gruß Daniel
Anzeige
AW: Bedingte Formatierungen in ein Excelblatt m. RGB Farben
22.07.2024 14:44:16
Onur
ColorIndex mit 56 Farben ist ein Relikt aus den Excel-Anfängen und wird nur wg der Abwärtskompatibiltät zu Verfügung gestellt - da hatten die Rechner halt nicht mehr Farben.
Genauso wie es sogar noch QBColor gibt mit ihren 16 Farben (aus den Anfängen von MS-Basic, als es noch "QuickBasic" hiess).
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige