刷新Excel VBA函数结果

时间:2020-03-05 18:39:38  来源:igfitidea点击:

有谁知道我如何获得用户定义的函数来重新评估自身(基于电子表格中已更改的数据)?我已经尝试过F9和Shift + F9,但是它们不起作用。唯一可行的方法是使用函数调用编辑单元格,然后按Enter。有任何想法吗?我似乎记得能够做到这一点...

解决方案

回答

好吧,我自己找到了这个。我们可以使用Ctrl + Alt + F9来完成此操作。

回答

我们应该在函数顶部使用Application.Volatile

Function doubleMe(d)
    Application.Volatile
    doubleMe = d * 2
End Function

然后,只要工作簿发生更改,它将重新评估(如果计算设置为自动)。

回答

有关在Excel中进行计算的F9键盘快捷键的更多信息

  • F9重新计算所有打开的工作簿中的所有工作表
  • Shift + F9重新计算活动工作表
  • Ctrl + Alt + F9重新计算所有打开的工作簿中的所有工作表(完全重新计算)
  • Shift + Ctrl + Alt + F9重建依赖关系树并进行完整的重新计算

回答

如果我们在UDF参数列表中包含对电子表格数据的所有引用,则每当引用数据发生更改时,Excel都会重新计算函数:

Public Function doubleMe(d as variant)
    doubleMe=d*2
    end Function

我们还可以使用Application.Volatile,
但这具有使UDF始终重新计算的缺点,
即使在不需要时也是如此,因为引用的数据没有更改。

Public Function doubleMe()
    Application.Volatile
    doubleMe=Worksheets("Fred").Range("A1")*2
    end Function