这个问题可以替代这个问题:
EXCEL VBA ignores Solver changes values
因为似乎还有另一个问题在原始问题中没有被理解。
我有以下Excel VBA代码片段来解决最小化问题:
SolverOk SetCell:="$AP$13", MaxMinVal:=2, ValueOf:=0, ByChange:="$AP$9:$AP$11", Engine:=1
SolverSolve UserFinish:=True
这是通过按下工作表上的按钮触发的宏(Do_Fit
)运行的。我在图表表格上有另一个按钮(显示合适),它也运行Do_fit
。按下工作表按钮时SOLVER运行,但按下图表按钮时则不运行。工作表有一个Worksheet_change
方法,其中包含以下语句:
If Target.Cells.Count > 1 Or IsEmpty(Target) Then Exit Sub
处理对工作表特定部分所做的更改,但不受Do_fit
的影响。不确定这是否与问题有关,但认为值得一提。更新:当我禁用Worksheet_Change
宏时,按下图表按钮时,SOLVER仍然无法运行
我尝试使用SolverReset重置问题,但这会产生错误,表示Excel已用尽。
我不明白为什么当我按下工作表按钮而不是图表按钮时SOLVER会运行,并且会对如何解决此问题提出任何建议
谢谢!
答案 0 :(得分:1)
根据Jon Peltier的建议,在Sheets("calcs").Activate
语句之前向VBA代码添加calcs
(SolverOk
是工作表的名称)。谢谢!