excel - 停止 VBA Evaluate 调用目标函数两次

标签 excel vba

我无法让 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/

相关文章:

vba - 使用 VBA 在 Excel 中添加注释

vba - 除非先打开 VB 编辑器,否则 PowerPoint VBA 代码不会运行

vba - Excel VBA-平均工作表中的所有数字单元格

vba - 清除未 protected 单元格的按钮

excel - 尝试选择工作表时,工作表类的选择方法失败

使用 Excel VBA 进行 SQL 查询

excel - 如何在 Google 表格或 Excel 中制作标记数据列表

vba - 使用单个命令清除 Excel 单元格的内容和格式

vba - EXCEL公式或VBA根据另一个单元格的数据提取数据

ms-access - Access Vba - 查找空值和空白值