【问题标题】:Excel VBA Re-run formulas (update) when any cell in sheet changes当工作表中的任何单元格发生更改时,Excel VBA 重新运行公式(更新)
【发布时间】:2014-10-08 21:48:04
【问题描述】:

我在 VBA 中编写了一个函数来根据某些单元格的值返回某个值。我在某个单元格的公式中执行/运行此函数

=MyFunction()

我的问题是,如果函数中使用的单元格(在 VBA 中)发生更改,则具有上述公式的单元格不会自动更新。

如果使用的某些单元格发生更改,如何重新运行或更新或重新执行上述公式?

【问题讨论】:

  • 只有在作为参数传递给函数的范围内的单元格发生更改时,Excel 才会刷新工作表公式(包括 UDF)。 Excel 不会解析您的 UDF 源代码以查看它是否需要在发生更改时重新计算您的 UDF。通过 UDF 的参数列表传递输入范围,或者查看将 Application.Volatile 添加到 UDF VBA 代码中。
  • 好吧,我的 UDF 只返回一个值,它的使用方式与我上面所说的完全一样,不确定这是否是一个问题。另一个问题是,它与正在更改的单元格不在同一个工作表中。
  • 我编辑了我的评论 - 希望可以解决问题。
  • 它确实清除了一些东西。我对Application.Volatile 的问题是正在更改的单元格不在使用该函数的同一工作表中。我需要做的就是在 UDF 中为需要跟踪任何更改的范围添加一个无用的参数,并且它起作用了!谢谢!

标签: vba excel excel-formula excel-2010


【解决方案1】:

您必须重新编码您的 UDF 以实现所需的波动率。假设您希望 UDF 在 A1B1C1 发生更改时重新计算,然后使用:

=MyFunction(A1,B1,C1)

使用参数获得所需的波动率。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-09
    相关资源
    最近更新 更多