【发布时间】:2018-06-22 09:43:23
【问题描述】:
这是我的第一篇文章,因为在学习 VBA 的几年中,我总是能够找到我所有问题的答案,因为有人比我更胜一筹,而且 stackexchange 很牛。然而,我终于遇到了一些我找不到任何答案的事情......
背景: 我有一个非常复杂的 Excel 工作簿,它非常 VBA 密集(很多循环和自动 subs)。我对从 VBA 引用单元格非常谨慎,因为如果有人在不更新 VBA 代码的情况下移动单元格,就会出现问题。但是,我有几个需要完成的计算对于单元格内公式来说太复杂了,所以我为这些东西创建了函数。这样可以避免任何篡改问题,并为我提供所需的力量。
问题: 但问题是,由于工作簿非常复杂,如果我使 UDF 易失,它们将锁定工作簿,因为它只是循环访问大量数据。 但如果我不让它们变得易变,函数值将不会在单元格中更新。
希望和梦想: 我想知道如何强制我的 UDF 运行而不会发生波动。
注意: 我已经尝试了所有我能找到的东西,但都没有成功,但我对想法持开放态度。 “.calculate”不起作用(除非我用错了)。 “.calculate = ...automatic”也不起作用。创建一个“volatile”变量并且我在外部切换也不起作用。
另一种解决方案是从不同的模块/子中临时打开函数波动,但我不知道有什么方法。
任何帮助将不胜感激。
谢谢!
【问题讨论】:
-
Application.Calculate应该是您所需要的。如果没有,请尝试Application.CalculateFull -
Application.Calculate 不起作用,但 Application.CalculateFull 完全符合我的需要!谢谢!!!
-
最简单的解决方案是将 UDF 使用的范围作为参数传递给 UDF - 这样,每当重新计算/修改任何相关单元格时,Excel 都会重新调用 UDF。
-
Ctrl+Alt+Shift+F9
标签: excel vba function user-defined-functions volatile