При создании программы, использующей решатель, мне нужно, чтобы пользователь мог вручную ввести значение сходимости и точности, которые использует встроенный решатель. Я хотел бы иметь возможность установить значение сходимости для ячейки или переменной, которую затем можно установить с помощью пользовательского ввода.
Вот пример кода решателя, который я использую:
SolverReset
SolverOk SetCell:="$D$14", MaxMinVal:=2, ValueOf:=0, ByChange:="$F$2:$F$5", _
Engine:=1, EngineDesc:="GRG Nonlinear"
SolverAdd CellRef:="$F$2", Relation:=1, FormulaText:="100"
SolverAdd CellRef:="$F$2", Relation:=3, FormulaText:="0.0000000001"
SolverAdd CellRef:="$F$3", Relation:=1, FormulaText:="100"
SolverAdd CellRef:="$F$3", Relation:=3, FormulaText:="-100"
SolverAdd CellRef:="$F$4", Relation:=1, FormulaText:="100"
SolverAdd CellRef:="$F$4", Relation:=3, FormulaText:="-100"
SolverAdd CellRef:="$F$5", Relation:=1, FormulaText:="10"
SolverAdd CellRef:="$F$5", Relation:=3, FormulaText:="0.0000000001"
SolverOptions MaxTime:=0, Iterations:=0, Precision:=1E-18, Convergence:= _
1E-16, StepThru:=False, Scaling:=True, AssumeNonNeg:=True, Derivatives:= _
1
SolverSolve True
Этот код просто изменяет значения в ячейках F2, F3, F4 и F5 (в пределах, которые я предоставляю), пытаясь минимизировать значение, которое у меня есть в D14.
В идеале я хотел бы иметь возможность вставить что-то вроде Convergence CellRef:="$B$16"
, но, похоже, это не работает. Кто-нибудь знает, как это сделать? Кажется, что это должно быть просто, но я придумываю пробел.
Convergence:= CDbl(range("B16").value2)
? - person Ioannis   schedule 18.06.2014