Используйте пересечение, чтобы проверить, находится ли диапазон Target
в требуемом диапазоне, например, столбец A
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Not Intersect(Target, Columns("A")) Is Nothing Then
If Target.Value <> "" Then
curRow = Target.Row
Target.Parent.Range("A" & curRow & ":AS" & curRow).Interior.ColorIndex = 15
'Target.Interior.ColorIndex = 15
End If
End If
End Sub
Избегайте использования ActiveSheet
, используйте Target.Parent
.ActiveSheet может быть другим листом и не обязательно является листом, в котором находится цель.
В качестве альтернативы используйте Target.Resize
:
Target.Resize(ColumnSize:=45).Interior.ColorIndex = 15
Таким образом, в итоге вы получите:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Not Intersect(Target, Columns("A")) Is Nothing Then
If Target.Value <> "" Then
Target.Resize(ColumnSize:=45).Interior.ColorIndex = 15
End If
End If
End Sub