试图使Excel VBA事件在输入范围内的值时将触发。
因此,列A到列AS的范围。如果我在A2列中输入一个值,它将填充背景颜色索引到范围(A2:AS2)。
以下代码针对所有行和列触发。请帮忙。
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Value <> "" Then
currentRow = Target.Row
ActiveSheet.Range("A" & curRow & ":AS" & curRow).Interior.ColorIndex = 15
'Target.Interior.ColorIndex = 15
End If
End Sub
答案 0 :(得分:1)
使用相交检查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