我无法让VBA的Evaluate()函数只执行一次;它似乎总是运行两次。例如,考虑下面的简单例子。如果我们运行RunEval()子程序,它会调用EvalTest()函数两次。这可以通过在即时窗口中打印的两个不同的随机数来看到。如果我们使用Evaluate而不是函数调用另一个子例程,行为将是相同的。有人可以解释我如何得到Evaluate执行一次目标函数而不是两次?谢谢。停止VBA从调用目标函数两次进行评估
Sub RunEval()
Evaluate "EvalTest()"
End Sub
Public Function EvalTest()
Debug.Print Rnd()
End Function
它被认为是一个错误,或仅仅是无证的行为? – jtolle 2010-04-14 15:05:32
我认为它是一个bug ... – 2010-04-15 09:53:00
用括号语法调用函数(例如'[EvalTest]')实现相同的结果 – 2013-07-04 15:55:09