Код разместить в модуле листа:
Код:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub ' выход, если выделено более одной ячейки
If Not Intersect(Target, Range("A1:B100")) Is Nothing Then ' диапазон реагирования кода
With Target
If .Value = Empty Then ' если значения нет (ячейку очистили)
Rows(.Row).Interior.Pattern = xlNone ' убираем цвет строки
Exit Sub ' выход из процедуры
End If
Select Case .Column
Case 1 ' если столбец первый
Range(Cells(.Row, 1), Cells(.Row, 4)).Interior.ColorIndex = 3 ' красим диапазон
' Rows(.Row).Interior.ColorIndex = 3 ' красим строку
Case 2 ' если столбец второй
Rows(.Row).Interior.ColorIndex = 5 ' красим строку
End Select
End With
End If
End Sub
Если цвет строки убирать не нужно, закомментируйте строку (апостроф в начале строки).
При изменении значений первого столбца для примера сделана заливка не строки, а диапазона.
Для выбора цвета можно запустить небольшой макрос. Код закрасит 55 ячеек третьего столбца палитрой цветов. Номер цвета в палитре - номер его строки.
Код:
' заливка ячеек на активном листе (в столбце3)
Sub ColorCells()
Dim i As Long
For i = 1 To 55
Cells(i, 3).Interior.ColorIndex = i
Next i
End Sub
Код разместить в общем модуле.
Число в строке макроса модуля листа и есть номер цвета: .Interior.ColorIndex = 5