vba求解器 – 为迭代添加一个延迟

我试图控制在VBBA中的Excel解算器。 我用它通过调整input值(i,8)来最小化目标单元格(i,10)的值。 我也有一个用户定义的函数调用外部应用程序的一些计算,使用单元格(我,8)作为input。 目标单元格是UDF输出与另一个固定值的差值。

我发现求解器定期设置问题然后跳过它。 我可以手动调整值来获得更好的解决scheme,所以我认为求解器跳过一个新的迭代比UDF返回一个值更快。

有没有办法减慢求解器迭代? 下面的代码,如果有帮助…

Sub Main() Dim Msg As String, MyString As String Dim Style As Variant, Response As Variant Application.ScreenUpdating = False Application.EnableEvents = False 'Define a confirmation message due to long duration of calculations Msg = "This calculation takes long. Do you want to proceed?" 'Define message box style Style = vbOKCancel + vbCritical + vbDefaultButton2 'Record the user response Response = MsgBox(Msg, Style) If Response = vbOK Then Call RateTool.RateSolver End If Application.ScreenUpdating = True Application.EnableEvents = True End Sub 

和解算器脚本

 Sub RateSolver() Dim First As Integer, Last As Integer Dim i As Integer First = Cells(2, 4).Value Last = Cells(3, 4).Value For i = First To Last SolverReset 'Define parameters for the solver: Minimise target cell (i,8) by changing input cell (i,6) SolverOk SetCell:=Cells(i, 10), MaxMinVal:=2, ByChange:=Cells(i, 8), Engine:=1 SolverSolve UserFinish:=True Next i End Sub 

 Application.Wait Now + TimeValue("00:00:02") 

以上将暂停2秒