Как автоматизировать решатель в VBA? - PullRequest
0 голосов
/ 17 мая 2019

Я хочу автоматизировать решатель Excel с переменными диапазонами и данными. Сформулировал следующий код, но не смог его решить

Sub excel_solver()
'
' excel_solver Macro
'

'
    SolverReset
    SolverOk SetCell:=ActiveCell, MaxMinVal:=2, ValueOf:=0, ByChange:=ActiveCell.Offset(0, -19).Range(Selection, Selection.End(xlDown)).Select, Engine:=2, EngineDesc:="Simplex LP"
    SolverAdd CellRef:=ActiveCell.Offset(0, -19).Range(Selection, Selection.End(xlDown)).Select, Relation:=5, FormulaText:="binary"
    SolverAdd CellRef:=ActiveCell.Offset(0, 2).Range(Selection, Selection.End(xlDown)).Select, Relation:=2, FormulaText:="1"
    SolverOk SetCell:=ActiveCell, MaxMinVal:=2, ValueOf:=0, ByChange:=ActiveCell.Offset(0, -19).Range(Selection, Selection.End(xlDown)).Select, Engine:=2, EngineDesc:="Simplex LP"
    SolverOk SetCell:="$AC$29542", MaxMinVal:=2, ValueOf:=0, ByChange:=ActiveCell.Offset(0, -19).Range(Selection, Selection.End(xlDown)).Select, Engine:=2, EngineDesc:="Simplex LP"
    SolverSolve

End Sub

1 Ответ

0 голосов
/ 17 мая 2019
This worked-
SolverReset
    SolverOk SetCell:=ActiveCell, MaxMinVal:=2, ValueOf:=0, ByChange:= _
        Range(ActiveCell.Offset(0, -19), ActiveCell.Offset(0, -19).End(xlDown)), Engine:=2, EngineDesc:="Simplex LP"
    SolverAdd CellRef:=Range(ActiveCell.Offset(0, 2), ActiveCell.Offset(0, 2).End(xlDown)), Relation:=2, FormulaText:="1"
    SolverAdd CellRef:=Range(ActiveCell.Offset(0, -19), ActiveCell.Offset(0, -19).End(xlDown)), Relation:=5, FormulaText:="binary"
    SolverOk SetCell:=ActiveCell, MaxMinVal:=2, ValueOf:=0, ByChange:= _
        Range(ActiveCell.Offset(0, -19), ActiveCell.Offset(0, -19).End(xlDown)), Engine:=2, EngineDesc:="Simplex LP"
    SolverOk SetCell:=ActiveCell, MaxMinVal:=2, ValueOf:=0, ByChange:= _
        Range(ActiveCell.Offset(0, -19), ActiveCell.Offset(0, -19).End(xlDown)), Engine:=2, EngineDesc:="Simplex LP"
    SolverSolve
...