[英]Excel VBA: Solver not working in loop
循環中的求解器可用於第一次迭代,但不能休息。 循環的其余部分工作正常。
Sub Macro1()
Sheets("model").Select
Dim i As Double
Dim p As Double
For i = 1 To 10
p = -0.1565 + ((i - 1) * 0.0015)
Sheets("model").Range("J15").Value = p
SolverOk SetCell:="$J$12", MaxMinVal:=2, ValueOf:=0, ByChange:="$B$4:$F$4", _
Engine:=1, EngineDesc:="GRG Nonlinear"
SolverOk SetCell:="$J$12", MaxMinVal:=2, ValueOf:=0, ByChange:="$B$4:$F$4", _
Engine:=1, EngineDesc:="GRG Nonlinear"
SolverSolve (True)
Sheets("rec").Select
Range("B1:H1").Select
Selection.Copy
Sheets("rec").Range(Cells((i + 4), 2), Cells((i + 4), 8)).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("C5").Select
Next i
End Sub
不幸的是,求解器僅在工作表處於活動狀態時才能運行,因此請插入
Worksheets("model").Activate
在您的第一個SolverOk
語句之前。
Sub Macro1()
Dim i As Long
Dim p As Double
For i = 1 To 10
p = -0.1565 + ((i - 1) * 0.0015)
With Worksheets("model")
.Activate
.Range("J15").Value = p
SolverOk SetCell:="$J$12", _
MaxMinVal:=2, _
ValueOf:=0, _
ByChange:="$B$4:$F$4", _
Engine:=1, _
EngineDesc:="GRG Nonlinear"
SolverOk SetCell:="$J$12", _
MaxMinVal:=2, _
ValueOf:=0, _
ByChange:="$B$4:$F$4", _
Engine:=1, _
EngineDesc:="GRG Nonlinear"
SolverSolve True
End With
With Worksheets("rec")
.Range(.Cells(i + 4, "B"), .Cells(i + 4, "H")).Value = .Range("B1:H1").Value
End With
Next i
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.