Это интересное задание!Для этого потребуется выполнить несколько шагов:
1) Добавить стандартный модуль (например, Module1) и создать две общедоступные переменные:
Public g_lngEXISTINGCOL As Long
Public g_rngPREVIOUSTARGET As Excel.Range
2) Возвращаясь к событию рабочей таблицы, вам необходимоиспользуйте следующий код:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rngTarget As Excel.Range
On Error Resume Next
Set rngTarget = Application.Intersect(Me.UsedRange, Target)
On Error GoTo 0
If Not rngTarget Is Nothing Then
If rngTarget.Cells.Count = 1 Then
With Target
If Not g_rngPREVIOUSTARGET Is Nothing Then
If g_lngEXISTINGCOL = 16777215 Then
g_rngPREVIOUSTARGET.Interior.ColorIndex = 0
Else
g_rngPREVIOUSTARGET.Interior.Color = g_lngEXISTINGCOL
End If
End If
g_lngEXISTINGCOL = .Interior.Color
Set g_rngPREVIOUSTARGET = Target
.Interior.ColorIndex = 6
End With
End If
End If
End Sub
3) Чтобы вернуться к исходному цвету интерьера перед сохранением рабочей книги, необходимо дважды щелкнуть «ThisWorkbook» и добавить событие «Перед сохранением»:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Not g_rngPREVIOUSTARGET Is Nothing Then
g_rngPREVIOUSTARGET.Interior.Color = g_lngEXISTINGCOL
End If
End Sub
Надеюсь, это поможет!