vbaでExcelソルバーを制御しようとしています。私は入力値(i、8)を調整することによって、ターゲットセル(i、10)の値を最小にするためにそれを使用します。私はまた、入力としてセル(i、8)を使用して、いくつかの計算のために外部アプリケーションを呼び出すユーザ定義関数を持っています。ターゲットセルは、UDF出力と別の固定値との差です。vbaソルバー - 反復に遅延を追加する
私はソルバーが定期的に問題を設定してからスキップすることを発見しました。私は手動で値を調整してより良い解を得ることができるので、ソルバは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
申し訳ありませんが、私は、いくつかの長い退屈なコードを取り出しましたMain()は、RateToolを開始するためのボタンを設定します。したがって、if response = vbOK文です。 – bwindi