Old*_*gly 4 excel vba excel-vba
在尝试帮助解决这个问题时,我在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
Run Code Online (Sandbox Code Playgroud)
我使用F8逐步执行此代码,并在执行每一行后手动检查Options中的计算模式.
我刚刚在Excel 2010中运行了您的代码并获得了相同的结果.如果有的话,更糟糕的是我得到了bug是否SolverReset被调用,而且,在运行代码之后,文本"设置问题..."在Excel底部的状态栏中徘徊
理所当然,Solver需要将计算设置为手动,GRG Nonlinear因为它将通过更改工作表中的单元格来评估目标函数,并且在正确的输入值到位之前不希望对它们进行求值.从Excel界面调用时,Solver会自行清理.放在一起VBA界面的人一定忘记了这个小细节.这显然是一个错误.也许你可以在Solver.com(前线系统的网站,为微软的求解器)提交错误报告.解决方法当然很简单:只需放线
Application.Calculation = xlCalculationAutomatic
Run Code Online (Sandbox Code Playgroud)
在sub的底部.
| 归档时间: |
|
| 查看次数: |
2148 次 |
| 最近记录: |