在VBA中求解器不会添加整数约束

我正在使用VBA代码来运行求解器。 以下是我的代码。 我想单元格C87:K93是整数,但是约束不会被添加到求解器中,所以我得到的值都是小数。 我可以知道如何更改代码,以便整数约束得到考虑?

Sub Solve() SolverReset SolverAdd CellRef:="$C$87:$K$93", Relation:=4, FormulaText:="integer" SolverAdd CellRef:="$C$87:$K$93", Relation:=1, FormulaText:="$C$48:$K$54" SolverAdd CellRef:="$L$87:$L$93", Relation:=1, FormulaText:="$M$87:$M$93" SolverAdd CellRef:="$C$87:$K$93", Relation:=3, FormulaText:="0" SolverOk SetCell:="$N$95", MaxMinVal:=1, ValueOf:="0", ByChange:="$C$87:$K$93" SolverSolve UserFinish:=True End Sub 

下面是运行代码后Solver图片的链接,整数约束就不会出现

图片

非常感谢您的帮助

我最近遇到了同样的问题。 即使没有在整数约束的末尾有FormulaText

这应该工作:

 Sub Solve() SolverReset SolverOk SetCell:="$N$95", MaxMinVal:=1, ValueOf:="0", ByChange:="$C$87:$K$93" SolverAdd CellRef:="$C$87:$K$93", Relation:=4 SolverAdd CellRef:="$C$87:$K$93", Relation:=1, FormulaText:="$C$48:$K$54" SolverAdd CellRef:="$L$87:$L$93", Relation:=1, FormulaText:="$M$87:$M$93" SolverAdd CellRef:="$C$87:$K$93", Relation:=3, FormulaText:="0" SolverSolve UserFinish:=True End Sub 

将整数约束( SolverAdd )应用于不属于决策variables( ByChange )的单元格时,求解器将提示:

“整数约束单元格引用必须只包含可变单元格”。

在你的例子中情况并非如此,但设定目标函数仍然起作用。 我假设如果在添加SolverOk之前添加整数约束,解算器还不知道决策variables( ByChange ),因此不包含整数约束。