使用Cells.Value从单元格中获取数字时,重新计算VBA中的表单

时间:2014-10-08 01:45:09

标签: excel vba excel-vba auto-update

这是一个简单的例子来解释我想要做的事情:

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的值?

1 个答案:

答案 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的分配应该直接进行,而不是通过激活工作表。