VBA + Solver循环不会打印每行的结果

时间:2012-09-21 15:32:43

标签: excel excel-vba solver vba

我是应用程序初学者的Visual Basic,并遇到以下问题。

我必须使用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 

1 个答案:

答案 0 :(得分:0)

SolverReset应清理解算器内的信息,例如目标单元格。

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

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

SolverSolve与按下按钮相同,按钮启动解算器解决定义的信息。添加UserFinish:= True,每行不得按下按钮。

SolverFinish应该保持已经实现的解决方案并且"应该"把它写回excel单元格。

THX