GoalSeek Range类的方法失败

时间:2016-09-28 20:47:12

标签: excel excel-vba vba

我正在尝试使用宏来实现GoalSeek方法,只要工作表中有任何更改,该宏就会自动运行。代码很简单,但收到此错误消息,我无法弄清楚如何解决。代码是:

    public function actionGetStudiosByLatLong( $regionName = '', $latitude='', $longitude='') {
        \Yii::$app->response->format = 'json';

        return Location::getByRegionAndLatLong( $regionName, $latitude, $longitude );
    }

其中" N45"是一个基于公式的细胞和" D49"是一个价值。我收到运行时错误消息" Range类的GoalSeek方法失败"。

感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

由于GoalSeek将强制执行工作表计算,因此会触发Worksheet_Calculate事件,该事件将调用CheckGoalSeek,这将执行GoalSeek,这将强制执行工作表计算,它将触发Worksheet_Calculate事件,该事件将调用CheckGoalSeek,这将执行GoalSeek,这将强制进行工作表计算......

要避免此循环流,您需要禁用事件处理。

Worksheet_Calculate功能更改为:

Private Sub Worksheet_Calculate()
    Application.EnableEvents = False
    CheckGoalSeek
    Application.EnableEvents = True
End Sub

免责声明:我第一次尝试此操作时,它锁定了我的Excel副本。我第二次尝试它是有效的。