Private Sub Worksheet_Change(ByVal Target As Range)
Const cFARBE_SONNTAG = 38 ->Sonntag hellrosa
Const cFARBE_SONNABEND = xlColorIndexNone->Sonnabend keine Farbe (40 = gelbbraun)
Const cFARBE_WOCHENTAG = xlColorIndexNone->Wochentag keine Farbe
Const cFARBE_OHNEDATUM = xlColorIndexNone->ohne Datum keine Farbe
Const cFARBE_GRUEN = 43 -> hellgruen
Const cSPDATUM = 1 ->Spalte mit Datum
Const cVONSPLATE = 1->markieren von
Const cBISSPLATE = 24->markieren bis
Const cSP_F = 6
Const cSP_K = 11
Const cSP_O = 15
Dim r As Range, z As Long
For Each r In Target.EntireRow
z = r.Row
Set r = Range(Cells(z, 1), Cells(z, cBISSPLATE))
->Spalte A Datum ?
If IsDate(Cells(z, cSPDATUM).Value) Then
If Weekday(Cells(z, cSPDATUM).Value, vbSunday) = vbSunday Then->Sonntag
If IsNull(r.Interior.ColorIndex) Or (r.Interior.ColorIndex <> cFARBE_SONNTAG) Then
r.Interior.ColorIndex = cFARBE_SONNTAG
End If
ElseIf Weekday(Cells(z, cSPDATUM).Value, vbSunday) = vbSaturday Then->Sonnabend
If IsNull(r.Interior.ColorIndex) Or (r.Interior.ColorIndex <> cFARBE_SONNABEND) Then
r.Interior.ColorIndex = cFARBE_SONNABEND
End If
Else->Werktag
If IsNull(r.Interior.ColorIndex) Or (r.Interior.ColorIndex <> cFARBE_WOCHENTAG) Then
r.Interior.ColorIndex = cFARBE_WOCHENTAG
End If
End If
Cells(z, cSP_F).Interior.ColorIndex = cFARBE_GRUEN
Cells(z, cSP_K).Interior.ColorIndex = cFARBE_GRUEN
Cells(z, cSP_O).Interior.ColorIndex = cFARBE_GRUEN
Else
If IsNull(r.Interior.ColorIndex) Or (r.Interior.ColorIndex <> cFARBE_OHNEDATUM) Then
r.Interior.ColorIndex = cFARBE_OHNEDATUM
End If
End If
Next
Set r = Nothing
End Sub