Код ниже отлично работает в первый раз, когда я запускаю его,Solver Не работает во второй раз, когда я запускаю его
Но когда я запускаю его снова во второй или третий раз, то
его дает мне msgbox, который из решателя говорит, что нашел решение, затем, когда я нажимаю select OK
он просто выходит из под. Не понимаю, почему.
Также я хотел знать, как дать команду OK
запросу из диалогового окна Solver через vba? Или просто избегайте этого.
Option Explicit
Sub MinimizeCost()
Dim wm, ws, wr As Worksheet
Dim i, j, FinalRow As Long
Dim char As Variant
Dim ScnCap, ScnDem As Range
Set wm = Sheets("Model")
Set ws = Sheets("Scenarios")
Set wr = Sheets("Results")
For i = 1 To 5
With ws
j = i + 1
Set ScnCap = .Range(.Cells(5, j), .Cells(7, j))
End With
wm.Range("Capacities") = ScnCap.Value
With ws
j = i + 1
Set ScnDem = .Range(.Cells(10, j), .Cells(13, j))
End With
ScnDem.Copy
wm.Range("Demands").PasteSpecial Transpose:=True
Call Solveit
FinalRow = wr.Range("A9000").End(xlUp).Row
FinalRow = FinalRow + 1
wr.Range("A" & FinalRow + 1) = "Scenario" & " " & i
wr.Range("A" & FinalRow + 2) = "Shipments"
wr.Range("F" & FinalRow + 2) = "Total Cost"
wm.Range("TotalCost").Copy
wr.Range("F" & FinalRow + 3).PasteSpecial xlPasteValues
wm.Range("Shipped").Copy
wr.Range("A" & FinalRow + 3).PasteSpecial xlPasteValues
SendKeys ("{ESC}")
wm.Range("A1").Select
Next i
End Sub
Sub Solveit()
Dim wk As Worksheet
Set wk = Sheets("Model")
wk.Select
SolverOk SetCell:="$B$20", MaxMinVal:=2, ValueOf:=0, ByChange:="$C$13:$F$15", _
Engine:=2, EngineDesc:="Simplex LP"
SolverOk SetCell:="$B$20", MaxMinVal:=2, ValueOf:=0, ByChange:="$C$13:$F$15", _
Engine:=2, EngineDesc:="Simplex LP"
SolverSolve
End Sub