【问题标题】:Excel VBA: Solver not working in loopExcel VBA:求解器不循环工作
【发布时间】:2017-05-16 09:09:03
【问题描述】:

循环中的 Solver 对第一次迭代有效,但对休息无效。循环的其余部分工作正常。

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

【问题讨论】:

    标签: vba excel solver xla


    【解决方案1】:

    不幸的是,Solver 仅在工作表处于活动状态时才会运行,因此请插入一个

    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
    

    【讨论】:

      猜你喜欢
      • 2016-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-06
      • 1970-01-01
      • 1970-01-01
      • 2013-03-08
      相关资源
      最近更新 更多