【问题标题】:Excel VBA Function RecalculationExcel VBA 函数重新计算
【发布时间】:2013-06-07 16:01:45
【问题描述】:

我写了一个小的 Excel VBA 函数“MyTableResults”

Public Function MyTableResults(Code As String) As Variant

使用基于参数的查询过滤器从数据库中返回一个十进制值。

我在大约 10 个单元格中使用了该公式,运行流畅。 函数调用例如

=MyTableResults("Apple")

但是每次我在工作表中插入一列或删除一列时,我都会对函数产生影响,即调用函数时实际上没有从工作表中调用公式,而 excel 的速度太慢而无法返回起来。

为什么当我编辑工作表(如插入列、删除列)时,excel 会调用我的函数,从而使计算变慢,我该如何停止它? 我试过了

Application.ScreenUpdating = False
Application.DisplayStatusBar = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
ActiveSheet.DisplayPageBreaks = False
ActiveSheet.AutoFilterMode = False

在我的函数中

【问题讨论】:

  • 对于其他提示,除了我的回答,您可以添加一些其他信息 - 您调用函数的方式是什么?您如何将Code 设置为字符串或对任何单元格的引用?
  • 另外你可以尝试使用Activesheet.EnableCalculation = False。但要小心,因为它肯定会切换整个工作表的计算。

标签: vba excel


【解决方案1】:

你可以尝试额外添加

Application.Volatile False

一开始,在你函数内部的第一行,比如:

Public Function MyTableResults(Code As String) As Variant
    Application.Volatile False

    '...your code here

End Function

但是,它在某些情况下可能会有所帮助,例如插入行/列,但在删除行时无济于事(我已经尝试过)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-22
    • 2017-07-17
    • 2010-10-25
    • 1970-01-01
    相关资源
    最近更新 更多