[英]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.