Увы, доступные без разрешения макросов функции рабочего листа не реагируют на заливку. С разрешением макросов возможны варианты. Но и они не реагируют на перекрашивание цвета ячейки сразу Вариант 1: макрос изменения цвета, прикрепленный к событию на листе. Реализован в первом файле. [vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Static rN As Range If rN Is Nothing Then Set rN = Target: Exit Sub If rN.Column <> 2 Then Set rN = Target: Exit Sub If rN.Interior.Color = 255 Then rN.Offset(0, 1).Interior.Color = 65535 ElseIf rN.Interior.Color = 16777215 Then rN.Offset(0, 1).Interior.Color = 16777215 End If Set rN = Target End Sub
[/vba] Перекрас в третьем столбце происходит после выделения ячейки во втором столбце, ее перекраса и перехода в другую ячейку. Это самый гибкий способ, который мне видится. Вариант 2: UDF (функция пользователя) и условное форматирование с ее использованием. Реализовано во втором файле. [vba]
Код
Function ЦветЛевСосед(rN As Range) As Long If rN.Column = 1 Then ЦветЛевСосед = -1 ЦветЛевСосед = rN.Offset(0, -1).Interior.Color End Function
[/vba] Увы, в этом случае перекрас произойдет только когда будет запущен пересчет формул листа (например, при входе на изменение ячейки и нажатии ENTER) Есть еще варианты. Даже без использования VBA, но без разрешения макросов варианта не знаю.
Увы, доступные без разрешения макросов функции рабочего листа не реагируют на заливку. С разрешением макросов возможны варианты. Но и они не реагируют на перекрашивание цвета ячейки сразу Вариант 1: макрос изменения цвета, прикрепленный к событию на листе. Реализован в первом файле. [vba]
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Static rN As Range If rN Is Nothing Then Set rN = Target: Exit Sub If rN.Column <> 2 Then Set rN = Target: Exit Sub If rN.Interior.Color = 255 Then rN.Offset(0, 1).Interior.Color = 65535 ElseIf rN.Interior.Color = 16777215 Then rN.Offset(0, 1).Interior.Color = 16777215 End If Set rN = Target End Sub
[/vba] Перекрас в третьем столбце происходит после выделения ячейки во втором столбце, ее перекраса и перехода в другую ячейку. Это самый гибкий способ, который мне видится. Вариант 2: UDF (функция пользователя) и условное форматирование с ее использованием. Реализовано во втором файле. [vba]
Код
Function ЦветЛевСосед(rN As Range) As Long If rN.Column = 1 Then ЦветЛевСосед = -1 ЦветЛевСосед = rN.Offset(0, -1).Interior.Color End Function
[/vba] Увы, в этом случае перекрас произойдет только когда будет запущен пересчет формул листа (например, при входе на изменение ячейки и нажатии ENTER) Есть еще варианты. Даже без использования VBA, но без разрешения макросов варианта не знаю.Perfect2You