VBA中的解算器不添加整数约束

VBA中的解算器不添加整数约束,vba,excel,integer,constraints,Vba,Excel,Integer,Constraints,我使用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:

我使用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
下面是运行代码后解算器图片的链接,整数约束不会出现


非常感谢您的帮助

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

这应该起作用:

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
)应用于不属于决策变量(
ByChange
)的单元格时,解算器会提示:

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


在您的示例中,情况并非如此,但目标函数的设置仍然发挥着作用。我假设,如果在添加
SolverOk
之前添加整数约束,则解算器还不知道决策变量(
ByChange
),因此不包括整数约束。

尝试在没有VBA的情况下手动完成所有操作。看看约束是否消失。请记住,您可以有一个整数约束,甚至可以得到十进制结果。这就是解算器的工作方式。如果解算器无法获得整数解,它将尝试可能的解。这意味着没有整数解决方案,或者您的模型设计不正确。(这并不意味着约束将从定义中消失)我知道这已经有一段时间了,但是对于关系4、5和6,您不能有
公式文本