0

私は Visual Basic for Application の初心者で、次の問題が発生しました。

Excel ソルバーを使用して、1 つの行の 2 つの変数セルを変更し、同じ行の別のセルをゼロにする必要があります。セルは、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 を開始します。add UserFinish:=True を使用すると、ボタンをすべての行で押す必要はありません。

SolverFinish は、達成されたソリューションを保持し、それを Excel セルに書き戻す必要があります。

どうも

于 2012-10-04T12:00:20.623 に答える