这是一个简单的例子来解释我想要做的事情:
Function fun(X As Double)
Worksheets("Sheet1").Activate
Y = Cells(2, "C").Value
fun = X + Y
End Function
因此,如果我在excel表格中更改X
的值,fun
的结果将按预期更改,但如果我更改Y
的值,则不会发生任何事情。我必须再次更改X
,以便函数获取Y
的新值并计算正确的值。
有没有办法在此VBA函数中添加代码,因此fun
的结果会自动更新Y
的值?
答案 0 :(得分:1)
将Application.Volatile
添加到您的函数中作为第一行。
Function fun(X As Double)
Application.Volatile
'Worksheets("Sheet1").Activate
Dim Y As Long
Y = Worksheets("Sheet1").Cells(2, "C").Value
fun = X + Y
End Function
Y的分配应该直接进行,而不是通过激活工作表。