Excel 如何编写VBA代码以使用对象单元上具有边界的解算器?

Excel 如何编写VBA代码以使用对象单元上具有边界的解算器?,excel,vba,excel-2010,solver,Excel,Vba,Excel 2010,Solver,是我正在引用的Excel文件 我在VBA中编写了几行代码来运行基于以下参数的解算器:通过更改R3的值来查找H15的最大值,R3将大于或等于C7,小于或等于C8。VBA中的实际宏如下所示 Sub Mmax_A() ' ' Mmax Macro ' ' SolverReset Range("R3").Value = Range("R3").Value + Range("C5").Value / Range("U1

是我正在引用的Excel文件

我在VBA中编写了几行代码来运行基于以下参数的解算器:通过更改R3的值来查找H15的最大值,R3将大于或等于C7,小于或等于C8。VBA中的实际宏如下所示

Sub Mmax_A()
'
' Mmax Macro
'

'
    SolverReset
    Range("R3").Value = Range("R3").Value + Range("C5").Value / Range("U14").Value
    SolverOk SetCell:="$H$15", MaxMinVal:=1, ValueOf:=0, ByChange:="$R$3", Engine:=1 _
        , EngineDesc:="GRG Nonlinear"
    SolverAdd CellRef:=Range("C7"), Relation:=3
    SolverAdd CellRef:=Range("C8"), Relation:=1
    
    SolverSolve userFinish:=True
End Sub
请注意,行开头的“Range(“R3”).Value=Range(“R3”).Value+..”只是一个函数,用于让解算器通过计算的增量更改R3的初始值(以确保解算器不会一直寻找相同的解,因为它不会在没有实际操作的情况下四处查看太多)。它不应该影响我的问题(如果这是问题的话,我会觉得自己很傻)

当我在“解算器”对话框中手动输入这些参数(我们从U19:Z19加载参数)时,效果很好,世界也应该如此。当我运行上面的宏(分配给叠加在单元格Q14顶部的“求解(+)”按钮)时,我有时会得到一个超出我在单元格R3上设置的限制的解决方案

当C8小于5时,几乎总是会发生这种情况。当值增大到值大于30时不会发生错误时,这种情况发生的频率会降低

我想这意味着我把我的界限/关系编错了。任何帮助或链接都将不胜感激