【发布时间】:2016-04-17 23:02:35
【问题描述】:
在尝试帮助解决this question 时,我在 VBA 中遇到了 Solver 的一些非常奇怪的行为。
我想知道是否有其他人可以重现它,或者我的系统(Windows 10、Excel 2016)是否有问题,以及是否有人可以指出发生了什么。
工作簿设置非常简单。
这是我正在测试的代码...
Sub mySolve()
Dim SetRng As Range, ChangeRng As Range
Dim i As Long
For i = 2 To 4
Set SetRng = Sheets("Sheet1").Cells(i, 5)
Set ChangeRng = Sheets("Sheet1").Cells(i, 4)
SolverReset
SolverOk SetCell:=SetRng.Address, MaxMinVal:=3, _
ValueOf:=1, ByChange:=ChangeRng.Address, _
Engine:=1, EngineDesc:="GRG NONLINEAR"
SolverSolve UserFinish:=True
SolverFinish KeepFinal:=1
Next i
End Sub
我使用 F8 单步执行此代码,并在每行执行后手动检查选项中的计算模式。
- 在 SolverSolve 之后,计算模式是手动的,除非我这样做,否则不会返回。
- 如果我移除对 SolverReset 的调用,在调用 SolverSolve 后,计算模式不会更改为手动。
【问题讨论】:
-
在没有 VBA 的情况下运行求解器会发生什么。会不会改变计算模式?
-
否 - 所有通过 Excel 界面按预期工作。