Excel力计算

时间:2014-07-17 21:21:02

标签: excel validation excel-vba excel-formula volatile vba

我有一个由

评估的单元格

=IF(OR(J41="",J40=""),"",(1-($J$41/$J$40)))

计算用户输入的两个单元格之间的百分比误差。另外,我在一个单独的工作表上有一个IFC,它正在验证这个单元格以及其他单元格,如果百分比误差值高于/低于某个数字,则将其设置为某种颜色并带有警告。问题是单元格没有显示警告,除非我点击它并按Enter(或F2 + Enter),这将计算单元格并填充当时的值。当用户将值输入J41和J40时,有没有办法强制计算在该单元格中发生,从而立即填充警告?我已经检查了多个线程,有人说使用Application.Volatile语句,但是我不太确定它是否会起作用..

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

手动计算范围就像使用Range.Calculate一样简单。 要在某个范围内更改值时运行代码,请使用Worksheet_Change

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rngTrigger As Range: Set rngTrigger = Range("D5")
    Dim rngTarget As Range: Set rngTarget = Range("E5")

    If Not Intersect(Target, rngTrigger) Is Nothing Then _
        rngTarget.Calculate
End Sub