将变量传递给 Excel 求解器 VBA 中的 "Relation" 参数
Pass Variable to "Relation" parameter in Excel Solver VBA
我正在尝试根据单元格 (I28) 中的公式更改 VBA 求解器中的关系。有时我希望约束关系是“=”,有时是“>=”。 I28 中公式的输出是 (2) 或 (3) 我的想法总结在下面第 7 行:
Dim relI As Range
Set relI = Value.Range("i28")
With relI
SolverReset
SolverAdd CellRef:="$m", Relation:=1, FormulaText:="$e"
SolverAdd CellRef:="$g", Relation:=2, FormulaText:="$C"
SolverAdd CellRef:="$I", Relation:=relI, FormulaText:="$I"
SolverAdd CellRef:="$C:$C", Relation:=2, FormulaText:="$D:$D"
SolverOk SetCell:="$h", MaxMinVal:=1, ValueOf:=0, ByChange:="$g:$g", _
Engine:=1, EngineDesc:="GRG Nonlinear"
End With
我如何/我能否以这种方式将该变量传递给求解器?
@BigBen 帮忙解决了这个问题。此解决方案将从单元格内调用变量。对我来说,这是比在 VBA.
中声明变量更好的解决方案
SolverReset
SolverAdd CellRef:="$M", Relation:=1, FormulaText:="$E"
SolverAdd CellRef:="$G", Relation:=2, FormulaText:="$C"
SolverAdd CellRef:="$I", Relation:=Range("I28").Value, FormulaText:="$I"
SolverAdd CellRef:="$C:$C", Relation:=2, FormulaText:="$D:$D"
SolverOk SetCell:="$H", MaxMinVal:=1, ValueOf:=0, ByChange:="$G:$G", _
Engine:=1, EngineDesc:="GRG Nonlinear"
我正在尝试根据单元格 (I28) 中的公式更改 VBA 求解器中的关系。有时我希望约束关系是“=”,有时是“>=”。 I28 中公式的输出是 (2) 或 (3) 我的想法总结在下面第 7 行:
Dim relI As Range
Set relI = Value.Range("i28")
With relI
SolverReset
SolverAdd CellRef:="$m", Relation:=1, FormulaText:="$e"
SolverAdd CellRef:="$g", Relation:=2, FormulaText:="$C"
SolverAdd CellRef:="$I", Relation:=relI, FormulaText:="$I"
SolverAdd CellRef:="$C:$C", Relation:=2, FormulaText:="$D:$D"
SolverOk SetCell:="$h", MaxMinVal:=1, ValueOf:=0, ByChange:="$g:$g", _
Engine:=1, EngineDesc:="GRG Nonlinear"
End With
我如何/我能否以这种方式将该变量传递给求解器?
@BigBen 帮忙解决了这个问题。此解决方案将从单元格内调用变量。对我来说,这是比在 VBA.
中声明变量更好的解决方案SolverReset
SolverAdd CellRef:="$M", Relation:=1, FormulaText:="$E"
SolverAdd CellRef:="$G", Relation:=2, FormulaText:="$C"
SolverAdd CellRef:="$I", Relation:=Range("I28").Value, FormulaText:="$I"
SolverAdd CellRef:="$C:$C", Relation:=2, FormulaText:="$D:$D"
SolverOk SetCell:="$H", MaxMinVal:=1, ValueOf:=0, ByChange:="$G:$G", _
Engine:=1, EngineDesc:="GRG Nonlinear"