单元格值增加时呈绿色闪烁,减less时呈红色

我在Excel表格中有一个feed,如果值相应地改变,那么想要单元格闪烁绿色/红色。 有人可以帮助吗? 谢谢。

Private Sub Worksheet_Change(ByVal Target As Range) Dim KeyCells As Range Set KeyCells = Range("B1:B27") If Not Application.Intersect(KeyCells, Range(Target.Address)) _ Is Nothing Then Target.Interior.ColorIndex = 36 End If End Sub 

谢谢您的帮助

…你不能真的让它闪光,但你可以改变阴影…

我会这样做的方式是,在工作簿中没有使用的地方,创build一组单元格来存储单元格的旧值(可以在Worksheet_Change事件中设置这些单元格),那么这只是创build一个条件格式规则为您的单元比较您的单元格的值与帮助单元的值 – 如果更大,阴影=绿色,如果更小,sahding =红色。

希望这是有道理的。

正如约翰·布斯托斯所说,你需要另外一列容纳单元的previous value 。 这个值是必要的,以便进行比较,以识别目标是现在更高还是更低。

为了实现Flash,您需要在代码中设置暂停而不冻结主UI。 此代码没有经过testing或保证能够按照您的要求工作,但应该作为一个非常好的起点。

 Private Sub Worksheet_Change(ByVal Target As Range) Dim KeyCells As Range Set KeyCells = Range("B1:B27") If Not Application.Intersect(KeyCells, Range(Target.Address)) _ Is Nothing Then If Target.Value > Cells(Target.Row, 5).Value Then 'flash green Target.Interior.ColorIndex = 10 Pause 0.5 Target.Interior.ColorIndex = 2 Pause 0.5 Target.Interior.ColorIndex = 10 ElseIf Target.Value < Cells(Target.Row, 5).Value Then 'flash red Target.Interior.ColorIndex = 3 Pause 0.5 Target.Interior.ColorIndex = 2 Pause 0.5 Target.Interior.ColorIndex = 3 End If Cells(Target.Row, 5).Value = Target.Value End If End Sub 'Pauses execution without holding up main UI thread Public Function Pause(NumberOfSeconds As Variant) On Error GoTo Error_GoTo Dim PauseTime As Variant Dim Start As Variant PauseTime = NumberOfSeconds Start = Timer Do While Timer < Start + PauseTime DoEvents Loop Exit_GoTo: On Error GoTo 0 Exit Function Error_GoTo: Debug.Print Err.Number, Err.Description, Erl GoTo Exit_GoTo End Function 

打开Visual Basic编辑器(VBE)并双击Sheet 1,然后粘贴上面的代码。 现在,您将注意到,在更改目标范围B1:B27的值时,将在E列中放置一个值。 你可以在上面的代码中用你想要的任何列replaceCells(Target.Row, 5).Value 5来改变它。

现在随着值的增加或减less,细胞会闪烁以反映变化。

Pausefunction在这个SO贴子上find。