0
Я использую Solver с помощью следующего кода:VBA Solver цикл
Sub Test()
SolverReset
SolverOk SetCell:="$K$7", MaxMinVal:=1, ValueOf:=0, ByChange:="$I$7:$J$7", _
Engine:=1, EngineDesc:="GRG Nonlinear"
SolverAdd CellRef:="$G$7", Relation:=2, FormulaText:="$H$7"
SolverAdd CellRef:="$K$7", Relation:=2, FormulaText:="$B$7"
SolverSolve UserFinish:=False
SolverFinish KeepFinal:=1
End Sub
теперь мне нужно положить его в петлю, чтобы запустить Solver от строки к строке 7 17. Я закодирован его согласно ниже но он не работает:
Dim i As Long
For i = 7 To 17
SolverReset
SolverOk SetCell:="$K$" & i, MaxMinVal:=1, ValueOf:=0, ByChange:="$I$ & i:$J$ & i", _
Engine:=1, EngineDesc:="GRG Nonlinear"
SolverAdd CellRef:="$G$" & i, Relation:=2, FormulaText:="$H$" & i
SolverAdd CellRef:="$K$" & i, Relation:=2, FormulaText:="$B$" & i
SolverSolve UserFinish:=False
SolverFinish KeepFinal:=1
Next i
End sub
«не работает» должна быть добавлена к цензуре список ... Можете ли вы объяснить более подробную какой результат вы получение - это ошибка компиляции, исключение времени выполнения или что-то еще? – GSazheniuk
Он работал без цикла, поэтому кажется, что это ошибка компиляции (я не уверен в правильном синтаксисе функции ByChange). – fdt6243
, так что вы пропустили двойные кавычки в этом месте - ByChange: = "$ I $ & i: $ J $ & i", и вы должны использовать ByChange: = "$ I $" & i & ": $ J $ «& i Попробуйте и дайте мне знать, если это проблема. – GSazheniuk