答案1
您需要手动执行此操作,因为标准条件格式不支持它。
你可以处理这个事件:
Private Sub Worksheet_Change(ByVal Target As Range)
实现此目的的方法如下所示: https://stackoverflow.com/questions/409434/automatically-execute-an-excel-macro-on-a-cell-change
您需要Target
与单元格的当前值进行比较。然后,您可以使用以下方法设置单元格的颜色cell.Interior.ColorIndex = ...
--
针对该评论,有两点需要回应:
您说得对,这Change
仅指用户发起的更改。要捕获重新计算,您还需要处理事件Calculate
。以下是一个例子。
Private Sub Worksheet_Calculate()
Call updateme
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Call updateme
End Sub
updateme
无论何时发生上述任一事件,这两个函数都会调用另一个子程序。
在此函数中,您需要检查值是否已更改,然后决定颜色更改。这意味着在全局变量中跟踪先前的值。您可以这样做:
Private Sub updateme()
Set cell = ActiveSheet.Range("A5")
newval = cell.Value
If newval > lastval Then
cell.Interior.ColorIndex = 3
End If
If newval < lastval Then
cell.Interior.ColorIndex = 4
End If
If newval = lastval Then
cell.Interior.ColorIndex = 2
End If
lastval = newval
End Sub
lastval
如何在函数调用中跟踪该值?您需要将lastval
变量初始化为全局变量。为此,您需要在 VBA 编辑器中创建一个新的“模块”,并将其添加到模块中:
Public lastval As Double