Excel VBA函数重新计算

时间:2013-06-07 16:01:46

标签: excel vba excel-vba

我写了一个小的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

在我的功能中

1 个答案:

答案 0 :(得分:1)

你可以尝试另外添加

Application.Volatile False

一开始,在你的第一行功能中,如:

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

    '...your code here

End Function

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