【问题标题】:Excel Force CalculationExcel力计算
【发布时间】:2014-09-08 22:15:43
【问题描述】:

我有一个由

评估的单元格

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

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

有什么建议吗?

【问题讨论】:

  • 抱歉,我创建的只是一个在后台运行 VBA 的接口表,它引用了我表单中的所有单元格并对它们设置了某些限制/验证,并在然后导出到要插入数据库的 1 行表的表单。它只是一个可以设置验证数据的接口。
  • 如果您使用代码来完成所有这些工作,那么展示它是一个不错的主意。 ;)
  • 同意@Rory - 你的描述缺乏足够的细节来确定你的验证是如何被触发的。您显示的公式应该会自动更新。
  • Application.Volatile True 在您使用 UDF 时有效,是吗?见cpearson.com/excel/writingfunctionsinvba.aspx
  • 不,不是 UDF,它是在单元格本身中计算的。我想要做的就是使用其中的公式验证单元格中的计算。在我单击它并再次按 Enter 之前,该单元格不会进行验证。这怎么不够详细?当单元格中有公式时,它会显示结果,而不是将结果的值放入该单元格。我想要单元格中结果的值,以便数据验证立即获取它并说明它是否是正确的数字......有意义吗?

标签: validation excel excel-formula volatile vba


【解决方案1】:

手动计算范围就像使用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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    • 2015-05-10
    • 2021-02-23
    • 2013-02-02
    • 2010-11-01
    相关资源
    最近更新 更多