0

我是 Visual Basic for Application 初学者,遇到以下问题。

我必须使用 Excel Solver 来更改一行中的两个变量单元格,以将同一行中的另一个单元格设为零。这些单元格通过 Excel 本身的简单计算连接起来。还必须定义一些约束。

使用下面的代码,只有最后定义的行将被重写到 excel 中的单元格中。之前的行已计算但未重写。

Sub solverloop() 

    Dim i As Long 
    For i = 96 To 154 
        SolverReset 
        SolverOk SetCell:="$AE$" & i, MaxMinVal:=3, ValueOf:=0, ByChange:=Range(Cells(i, "V"), Cells(i, "W")), Engine:=1, EngineDesc:="GRG-Nichtlinear" 

        SolverAdd CellRef:=Range(Cells(i, "V"), Cells(i, "W")), Relation:=3, FormulaText:="0" 
        'Solving the Modell, but message box which must be confirmed by the user will not be displayed
        SolverSolve UserFinish:=True
        'Finishing the model and keep the last result
        SolverFinish KeepFinal:=1 
    Next i

End Sub 
4

1 回答 1

0

SolverReset 应该清除求解器内部的信息,例如目标单元格。

SolverOK 是定义求解器操作的命令。该命令像遥控器一样工作。它可以用鼠标或键盘来完成。定义的单元格与您通过鼠标打开求解器窗口时看到的相同。

SolverAdd,添加可以由软件(求解器本身)更改的单元格,以实现 SolverOK 函数中定义的值。

SolverSolve 与您按下按钮相同,这将启动 Solver 求解定义的信息。使用添加 UserFinish:=True 按钮不能按每一行。

SolverFinish 应该保留获得的解决方案,并“应该”将其写回 excel 单元格。

谢谢

于 2012-10-04T12:00:20.623 回答