我无法让 VBA 的 Evaluate() 函数仅执行一次;它似乎总是运行两次。例如,考虑下面这个简单的例子。如果我们运行 RunEval() 子例程,它将调用 EvalTest() 函数两次。这可以通过立即窗口中打印的两个不同的随机数看出。如果我们使用 Evaluate 而不是函数调用另一个子例程,则行为将是相同的。有人可以解释一下如何让 Evaluate 执行目标函数一次而不是两次吗?谢谢。
Sub RunEval()
Evaluate "EvalTest()"
End Sub
Public Function EvalTest()
Debug.Print Rnd()
End Function
最佳答案
这个错误似乎只发生在 UDF 中,而不是内置函数中。
您可以通过添加表达式来绕过它:
Sub RunEval()
ActiveSheet.Evaluate "0+EvalTest()"
End Sub
但是 Evaluate 还存在许多其他限制,请参见此处 http://www.decisionmodels.com/calcsecretsh.htm
关于excel - 停止 VBA Evaluate 调用目标函数两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2611929/