VBA解算器代码问题

时间:2016-02-02 23:45:21

标签: excel vba excel-vba

我目前正在使用循环访问excel解算器。但每次解算器解决优化问题时,我都必须单击确定。我尝试了录制宏,但是当我单击“确定”按钮时没有出现任何代码。我将始终接受解算器建议的解决方案。我不想一直按下Ok按钮。可能有2000多个优化问题正在解决。有没有办法使这项工作?

另外,解决不平衡运输问题的方法是解决方案而不必制作虚拟耗材或需求节点吗?

谢谢。

代码如下: SolverReset

SolverOk SetCell:="$B$18", MaxMinVal:=2, ValueOf:=0, _
ByChange:="$M$5:$T$12", Engine:=2, EngineDesc:="Simplex LP"

SolverAdd CellRef:="$U$5:$U$12", Relation:=1, FormulaText:="$V$5:$V$12"

SolverAdd CellRef:="$M$13:$T$13", Relation:=2, FormulaText:="$M$14:$T$14"
SolverSolve

1 个答案:

答案 0 :(得分:0)

Solver.com上的documentation(制作Solver插件的公司网站)包含:

  

SolverSolve(UserFinish,ShowRef)

     

UserFinish可选Variant。如果没有,则返回True   显示“求解器结果”对话框。错误或省略返回   结果并显示“求解器结果”对话框。

     

ShowRef可选Variant。您可以传递宏的名称(作为   string)作为ShowRef参数。然后调用该宏代替   解算器暂停时显示“显示试用解决方案”对话框   由于下列任何原因。

因此,您似乎需要用

替换行SolverSolve
SolverSolve True

但是 - 阅读关于SolverSolve的返回值的其余文档可能是一个更好的主意,也许可以做类似的事情

retValue = SolverSolve(True)

然后检查retValue是否有错误处理,如果它不是与成功运行相对应的值之一。人们可以乐观。代码应该是悲观的。