2012-09-21 3 views
0

저는 Visual Basic for Application 초보자이며 다음과 같은 문제가 있습니다.VBA + 솔버 루프가 각 행에 대해 결과를 인쇄하지 않습니다.

Excel 솔버를 사용하여 하나의 행에서 두 개의 변수 셀을 변경하여 다른 행의 셀을 같은 행에서 0으로 놓아야합니다. 셀은 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 
+0

필요한 일부 정보가 여전히 무엇 않습니다 ** SolverReset ** 어떻게? 방법에 대한 ** SolverOk **, ** SolverAdd **, ** SolverSolve **, ** SolverFinish ** – user1406062

답변

0

SolverReset은 솔버 내부의 정보 (예 : 대상 셀)를 정리해야합니다.

SolverOK는 해석 작업을 정의하는 명령입니다. 명령은 리모컨처럼 작동합니다. 그것은 마우스 나 키보드로 할 수 있습니다. 정의 된 셀은 마우스로 솔버 창을 열 때 볼 수있는 것과 같습니다.

SolverAdd는 SolverOK 기능에서 정의 된 값을 얻기 위해 소프트웨어 (솔버 자체)로 변경할 수있는 셀을 추가했습니다.

SolverSolve는 단추를 누르면 정의 된 정보를 해결하는 해 찾기를 시작하는 것과 같습니다. add UserFinish : = True 버튼이 모든 행을 눌러서는 안됩니다.

SolverFinish는 달성 된 솔루션을 유지해야하며이를 Excel 셀에 다시 써야합니다.

들으

관련 문제