أخي أحمد غانم 
جرب الكود التالي لعله يفي بالغرض 
Option Explicit
    
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim OffsetCol As Long, X As Long
Static ColorRange As Range, ColorIndexes() As Variant
    
Const COLUMNSDISPLAYED As Long = 60
    
    Application.ScreenUpdating = False
    If Not ColorRange Is Nothing Then
        For X = 1 To ColorRange.Columns.Count
            ColorRange.Cells(X).Interior.ColorIndex = ColorIndexes(X)
        Next
    Else
        On Error Resume Next
        Set ColorRange = Range(Sheet2.Cells(1).Value)
        On Error GoTo 0
        
        If Not ColorRange Is Nothing Then
            For X = 1 To ColorRange.Columns.Count
                ColorRange.Cells(X).Interior.ColorIndex = CLng(Split(Sheet2.Cells(2).Value, ",")(X - 1))
            Next
        End If
    End If
    
    OffsetCol = Application.Max(Target.Column - (COLUMNSDISPLAYED \ 2), 0)
    Set ColorRange = Range(Cells(Target.Row, 1 + OffsetCol), Cells(Target.Row, Application.Min(Columns.Count, Target.Column + (COLUMNSDISPLAYED \ 2))))
    ReDim ColorIndexes(1 To ColorRange.Columns.Count)
    
    For X = 1 To ColorRange.Columns.Count
        ColorIndexes(X) = ColorRange.Cells(X).Interior.ColorIndex
    Next
    Sheet2.Cells(1).Value = ColorRange.Address(0, 0, , -1)
    Sheet2.Cells(2).Value = CStr(Join(ColorIndexes, ","))
    
    ColorRange.Interior.ColorIndex = 36
    Application.ScreenUpdating = True
End Sub