[英]Excel VBA: Solver not working in loop
The Solver in the loop works for the first iteration but not rest. 循环中的求解器可用于第一次迭代,但不能休息。 The rest of the loop works fine.
循环的其余部分工作正常。
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
Unfortunately, the Solver will only operate if the sheet is Active, so insert a 不幸的是,求解器仅在工作表处于活动状态时才能运行,因此请插入
Worksheets("model").Activate
before your first SolverOk
statement. 在您的第一个
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.