什么原因导致Goalseek手动工作,但不能在VBA中工作?

我有一个非常大的工作簿与许多工作表和数据。 出于某种原因,当我手动执行某个特定的Goalseek时,它会按照预期工作,但是如果我尝试在VBA中执行相同的确切Goalseek,则会根据预期更新理想单元格,但似乎只是停止工作。 因此我没有得到期望的结果。 (看起来像Goalseek只是经过一定次数的迭代,可能会在一次之后停止)。

有什么想法可能导致Goalseek不能在VBA中工作,而不是在手动运行的情况下工作? 另外值得注意的是,我从来没有得到一个运行时错误。 代码将执行到结束,只是不符合所需的结果。

我已经尝试在一个小小的工作簿(有1张数据)中运行代码,它的工作原理是这样的,所以这不是我的语法问题。

这里有一些你可以尝试的,记住我在一张大纸上有类似的问题。

在您正在使用的工作簿的Workbook_Open代码块中,您可以添加

 With Application .MaxIterations = 500 .MaxChange = 0.000001 End With 

或类似。 这将设置最大迭代次数和最小步长变化。

这听起来像是在计算涉及的数量上挣扎,所以它可能不是解决scheme。