小编use*_*716的帖子

非易失性UDF总是重新计算

我试图制作一个非易失性UDF,但似乎不可能.所以这是一个非常简单的测试-UDF:

Option Explicit
Dim i As Integer

Sub Main()

i = 0
[A1] = "zyy"
MsgBox i

End Sub

Function Test(rng As Range)
Application.Volatile (False)

Test = rng.Value
i = i + 1

End Function
Run Code Online (Sandbox Code Playgroud)

我得到了一个空的工作表,它使用了这个函数几次,每次我调用Main()并用UDF​​更改工作表上的任何单元格,所有这些都重新计算.如何使这个(任何)UDF不易变?Application.Volatile(False)应该有这种效果,但显然不起作用.

编辑:如果我手动更改单元格它会按预期工作,它只会在我通过VBA更改单元格时重新计算.这是正常的行为还是可以改变它?

vba volatile user-defined-functions excel-2010

6
推荐指数
2
解决办法
6316
查看次数