簡體   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