Andyle,
Mit der Farbe einer Zelle irgendwas zu bestimmen ist eine ganz dumme Idee! Kuck mal auf das Bild:
Hand auf's Herz, die Zellen sehen doch alle gleich rot aus, oder?
An den Werten in der Zelle lässt sich erahnen das ich wohl zeigen will das dem nicht so ist.
Wie hab ich das gemacht?
Mach eine neue Datei, färbe den Hintergrund von A1 rot oder in irgendeiner anderen beliebigen Farbe.
Und dann lässt Du den Code laufen:
Code:
Option Explicit
Sub Test()
Dim Here As Range
Dim Color As Long, i As Long, j As Long
Dim aRGB() As Integer
Set Here = Range("A1")
Color = Here.Interior.Color
ReDim aRGB(0 To 2) As Integer
Dim Direction As Integer
Color2RGB Color, aRGB(0), aRGB(1), aRGB(2)
i = 0
For j = 1 To 2
If aRGB(j) < aRGB(i) Then i = j
Next
Direction = IIf(aRGB(i) > 127, -1, 1)
On Error GoTo Exitpoint
Do While aRGB(i) <= 255
Color = VBA.RGB(aRGB(0), aRGB(1), aRGB(2))
With Here
.Interior.Color = Color
.Value = Color
End With
Set Here = Here.Offset(1)
aRGB(i) = aRGB(i) + Direction
Loop
Exitpoint:
End Sub
Sub Color2RGB(ByVal Color As Long, _
ByRef Red As Integer, ByRef Green As Integer, ByRef Blue As Integer)
'Calculate RGB values from Color (see also VBA.RGB)
Red = Color And 255 'Low byte only
Green = Color \ 256 And 255 'Shr 8
Blue = Color \ 65536 And 255 'Shr 16
End Sub
Wenn nur ein schusseliges Bit irgendwo anders ist, das sieht das für Dich als Mensch gleich aus, für die Maschine vor unserer Nase jedoch nicht!
Zum anderen gibt es keine Möglichkeit in Excel was Dich erkennen lässt das sich die Farbe geändert hat. Wenn Du also mit VBA die Farbe ausliest dann weißt Du nie ob das Ergebnis richtig ist. Wenn nur Du allein die Datei verwendest, dann bist Du wenigstens selber schuld wenn es falsch ist.
Und dann gibt es da noch das Problem welche Farbe man denn nun nehmen soll, was Du nicht weißt ist das eine Zelle mehrere Farben haben kann.
An die eigentliche Grundfarbe der Zelle kommst Du mit Range.Interior.Color, wenn die Zelle dann aber noch eine bedingte Formatierung hat, dann musst Du Range.DisplayFormat.Interior.Color verwenden. Hat die Zelle jedoch ein Muster, dann geht das mit Range.Interior.PatternColor
Und alle 3 Farben können zusammen in einer Zelle sein!
Also lass den Quatsch, wenn eine Zelle eine Farbe hat, dann hat das einen Grund.
Und diesen Grund kann man erkennen, in 95% aller Fälle die mir in über 30 Jahren untergekommen sind.
Bei Dir ist das ganz einfach, Du hast ein Datum, jedes Datum hat einen Wochentag und die lassen sich ganz einfach zählen und NICHT mit "Sa" in der Zelle.
Tu Dir selber einen Gefallen und nimm unseren Rat an, auch wenn Dir Deine Farblösung im Moment einfacher erscheint.
Andreas.