似乎有很多未解决的问题,像这样的问题。我确保其他问题中没有给出的答复/答案能够解决我的问题。
目标: 要使用VBA设置并激活 Solver 。
问题: 除了未考虑整数约束之外,其他所有内容似乎都可以正常工作。可以通过在运行VBA之后手动查看“求解器”对话框来确认这一点。
我的代码如下:
SolverReset
'Set constraints
SolverAdd cellRef:=Range("$L$2:$L$99"), relation:=4, FormulaText:="integer"
SolverAdd cellRef:=Range("$N$1"), relation:=2, FormulaText:=0
SolverAdd cellRef:=Range("$N$2:$N$99"), relation:=3, FormulaText:=0
'Set Objective
SolverOk SetCell:="$T$1", MaxMinVal:=2, ValueOf:="0",_
ByChange:="$L$2:$L$99", Engine:=1, EngineDesc:="GRG Nonlinear"
'Run Solver
SolverSolve UserFinish:=True
打开求解器对话框将显示除整数约束以外的所有内容均已成功设置: missing integer constraint
请注意,我已经尝试过:
-不包括
FormulaText:="integer"
-在我的FormulaText
值周围加双引号
重置计算机
答案 0 :(得分:0)
呜呼!
我不知何故偶然发现了我的答案!或至少是一个答案(我仍然不知道为什么原始代码不起作用)。
更换
SolverAdd cellRef:=Range("$L$2:$L$99"), relation:=4, FormulaText:="integer"
使用SolverAdd CellRef:="$L$2:$L$99", Relation:=4, FormulaText:="integer"
似乎可以解决问题。
我仍在使用
SolverAdd CellRef:=Range("N1"), Relation:=2, FormulaText:=0
和
SolverAdd CellRef:=Range("$N$2:$N$40"), Relation:=3, FormulaText:=0
因为它们起作用了,所以为什么要改变它们。
如果有人可以解释为什么原始代码不起作用,我将非常感激!