【发布时间】:2014-06-18 18:43:02
【问题描述】:
在创建使用求解器的程序时,我需要用户能够手动输入内置求解器使用的收敛和精度的值。我希望能够将收敛值设置为可以通过用户输入设置的单元格或变量。
这是我正在使用的求解器代码示例:
SolverReset
SolverOk SetCell:="$D$14", MaxMinVal:=2, ValueOf:=0, ByChange:="$F$2:$F$5", _
Engine:=1, EngineDesc:="GRG Nonlinear"
SolverAdd CellRef:="$F$2", Relation:=1, FormulaText:="100"
SolverAdd CellRef:="$F$2", Relation:=3, FormulaText:="0.0000000001"
SolverAdd CellRef:="$F$3", Relation:=1, FormulaText:="100"
SolverAdd CellRef:="$F$3", Relation:=3, FormulaText:="-100"
SolverAdd CellRef:="$F$4", Relation:=1, FormulaText:="100"
SolverAdd CellRef:="$F$4", Relation:=3, FormulaText:="-100"
SolverAdd CellRef:="$F$5", Relation:=1, FormulaText:="10"
SolverAdd CellRef:="$F$5", Relation:=3, FormulaText:="0.0000000001"
SolverOptions MaxTime:=0, Iterations:=0, Precision:=1E-18, Convergence:= _
1E-16, StepThru:=False, Scaling:=True, AssumeNonNeg:=True, Derivatives:= _
1
SolverSolve True
此代码只是改变单元格 F2、F3、F4 和 F5 中的值(在我提供的范围内),以试图最小化我在 D14 中的值。
理想情况下,我希望能够将Convergence CellRef:="$B$16" 之类的内容放入其中,但这似乎不起作用。有人知道怎么做这个吗?看起来应该很简单,但我想出了一个空白。
【问题讨论】:
-
你试过类似
Convergence:= CDbl(range("B16").value2)吗? -
有效!您可以将此作为答案发布,以便我将您标记为正确吗?
标签: vba excel excel-2010 solver excel-2013