Excel VisualBasic Script

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim iColor As Integer
    On Error Resume Next
    iColor = Target.Interior.ColorIndex
    If iColor < 0 Then
        iColor = 36
    Else
        iColor = iColor + 1
    End If
    If iColor = Target.Font.ColorIndex Then iColor = iColor + 1
    Cells.FormatConditions.Delete
    With Range("A" & Target.Row, Target.Address)
        .FormatConditions.Add Type:=2, Formula1:="TRUE"
        .FormatConditions(1).Interior.ColorIndex = iColor
    End With
    With Range(Target.Offset(1 - Target.Row, 0).Address & ":" & _
        Target.Offset(-1, 0).Address)
        .FormatConditions.Add Type:=2, Formula1:="TRUE"
        .FormatConditions(1).Interior.ColorIndex = iColor
    End With
End Sub