繁体   English   中英

Excel VBA:求解器无法循环工作

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM