GoalSeek范围类的方法失败

我试图实现GoalSeek方法使用一个macros,每当工作表中有任何更改将自动运行。 代码很简单,但得到这个错误消息,我不知道如何解决。 代码是:

Private Sub Worksheet_Calculate() CheckGoalSeek End Sub Private Sub CheckGoalSeek() Dim wb As Workbook Dim ws As Worksheet Set wb = ActiveWorkbook Set ws = wb.Sheets("MAIN") ws.Range("N45").GoalSeek Goal:=0, ChangingCell:=ws.Range("D49") End Sub 

其中“N45”是基于公式的单元格,“D49”是一个值。 我得到运行时错误消息“范围类的GoalSeek方法失败”。

任何帮助表示赞赏。

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

为了避免这种循环stream,你需要禁用事件处理。

将您的Worksheet_Calculate函数更改为:

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

免责声明:我第一次尝试这个,locking了我的Excel副本。 我第二次尝试它的工作。