我的工作表包含一个调用函数的单元格,它自然地返回一个值。如果值为" Filter",则应该更改单元格字体颜色。问题是,它只会在我刷新单元格中的函数时更改,而不是在工作表中的任何其他位置更改工作表时更改。我需要在任何工作表更改时更改字体颜色。为什么不是这样?
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
'change font color to red for filter losses
If Target.Column = 2 Then
If Target.Text = "Filter" Then
Range("B" & Target.Row).Font.ColorIndex = 3
End If
End If
Application.EnableEvents = True
End Sub
我也尝试过使用工作表计算事件,如下所示,但此代码根本不起作用:
Private Sub Worksheet_calculate()
Application.EnableEvents = False
Dim cell As Range
For Each cell In Me.UsedRange.Columns("B").Cells
If cell.Text = "Filter" Then
Range("B" & cell.Row).Font.ColorIndex = 3
End If
Next cell
Application.EnableEvents = True
End Sub
答案 0 :(得分:2)
作为评论的后续内容,这个有效:
Private Sub Worksheet_calculate()
Application.EnableEvents = False
On Error GoTo ErrorHandler
Dim cell As Range, rng As Range
Set rng = Intersect(Me.UsedRange, Me.Range("B:B"))
If rng Is Nothing Then GoTo ExitHere
For Each cell In rng
If cell.Text = "Filter" Then
cell.Font.ColorIndex = 3
End If
Next cell
ExitHere:
Application.EnableEvents = True
Exit Sub
ErrorHandler:
Resume ExitHere
End Sub
我稍微改变了你的事件 - 使用者更可靠
您也可以在循环之前添加rng.Font.ColorIndex = 1
以重置以前的字体颜色。