我無法讓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