VBA Sub未为Solver定义

时间:2017-01-13 20:44:13

标签: excel vba excel-vba excel-2010

以下代码行在我尝试使用它时给我Sub或Function未定义。我试过仔细检查我的拼写,重命名它,在网上查找其他问题(大多数其他错误都忘记在工作表或工作表之后添加s),但我不知道我的代码有什么问题。我最初从宏录制器中获取此代码。

我在不同的纸张上多次使用这个子,但这并没有影响我的其他相似的潜艇。

Sub SolverSolver()

    SolverOk SetCell:="$G$3", MaxMinVal:=2, ValueOf:=0, ByChange:="$G$4,$G$6", _
        Engine:=1, EngineDesc:="GRG Nonlinear"
    SolverSolve

End Sub

也许它被使用的方式是错误的,所以我已经添加了它在下面调用的方式。这一行是一个简单的大型子命令,比如为一个单元格命名,这个大的简单子也会重复多次。但是,即使尝试通过开发人员选项卡直接运行sub来运行sub,它仍然有相同的错误,所以我不会想到它被调用的方式。

ActiveSheet.Buttons.Add(630.75, 52.5, 74.25, 26.25).OnAction = "SolverSolver"

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:3)

您没有将引用设置为Solver。使用' s manadatory。设置如下:在VBA编辑器中,转到工具 - >参考文献 - >并选择解算器。单击“确定”。

enter image description here

还要确保您已启用了解算器加载项,在Excel中,您可以通过文件启用它 - >选项 - >加载项,这里选择管理下拉列表下的Excel加载项,然后单击go。在下一个屏幕上,选中Sover加载项,然后单击“确定”。

正如GSerg所提到的,如果您的SolverSolver子在一个工作表模块中,那么您需要在操作参数值中包含模块名称。因此,如果sheet1包含sub,那么

ActiveSheet.Buttons.Add(630.75, 52.5, 74.25, 26.25).OnAction = "Sheet1.SolverSolver"