Private Sub Worksheet_Change(ByVal Target As Range)
Dim R As Range, Gebied As Range, Kleur As Range, KleurGebied As Range, Rrij As Integer, Rkolom As Integer
Dim R1 As Range, R2 As Range, R3 As Range, Opmaakgebied As Range
Set Opmaakgebied = Range("D9:AA62")
Set Gebied = Intersect(Target, Opmaakgebied) 'Gebied is doorsnede van je selectie en "OpmaakGebied"
If Gebied Is Nothing Then Exit Sub
For Each R In Gebied
Rrij = (R.Row - Opmaakgebied.Row + 1) Mod 3
Rkolom = (R.Column - Opmaakgebied.Column + 1) Mod 4
'stel KleurGebied vast waarin de verandering plaats vond
If (Rrij = 1 And Rkolom = 1) Then 'links boven (tijd)
Set KleurGebied = Range(R, R(3, 4))
ElseIf (Rrij = 0 And Rkolom = 0) Then 'Rechts onder (soort)
Set KleurGebied = Range(R(-1, -2), R)
ElseIf (Rrij = 2 And Rkolom = 0) Then 'rechts midden (soort)
Set KleurGebied = Range(R(0, -2), R(2, 1))
End If
If Not KleurGebied Is Nothing Then
Set R1 = KleurGebied(1, 1) 'links boven (tijd)
Set R2 = KleurGebied(3, 4) 'Rechts onder (soort)
Set R3 = KleurGebied(2, 4) 'rechts midden (soort)
If R1 = "" Then
KleurGebied.Interior.Color = 14806254 'kleur grijs
ElseIf R2 = "" Then
KleurGebied.Interior.Color = ZoekKleur(R3) 'kleur is kleur R3
Else
KleurGebied.Interior.Color = ZoekKleur(R2) 'kleur is kleur R2
End If
End If
Next R
End Sub
Private Function ZoekKleur(R As Range) As Long
On Error GoTo eind
ZoekKleur = Range("KleurenLijst")(WorksheetFunction.Match(R, Range("KleurenLijst"), 0), 1).Interior.Color
On Error GoTo 0
Exit Function
eind:
On Error GoTo 0
ZoekKleur = 16777215
End Function