微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用宏跨工作表的循环求解器

如何解决使用宏跨工作表的循环求解器

我有限的知识知道我可以使用 For Each 循环来浏览工作簿的所有工作表,并且我可以将求解器记录为宏脚本。但是,当我尝试将这两种方法结合在一起以激活和运行每个工作表的求解器时,它无法正常工作(有时它可以工作但不能在所有工作表上工作,或者有时根本不起作用)。没有关于为什么此代码适用于某些工作表而不是所有工作表的控制或反馈。对于有效的工作表,当我检查约束时,有 18 个(我的工作表的数量)相同的 '$J$4:$J$5

Sub Solver()
Dim wb As Workbook: Set wb = Workbooks("A.xlsx")
Dim sh As Worksheet

For Each sh In wb.Worksheets

SolverOk SetCell:="$J$8",MaxMinVal:=2,ValueOf:=0,ByChange:="$J$4:$J$5",_
Engine:=1,EnineDesc:="GRG Nonlinear"

SolverAdd CellRef:="$J$4:$J$5",Relation:=1,FormulaText:="1"

SolverOk SetCell:="$J$8",Valueof:=0,_
Engine:=3,EnineDesc:="Evolutionary"
SolverOk SetCell:="$J$8",EnineDesc:="Evolutionary"

SolverSolve True

Next sh

End Sub

解决方法

经过一周的调查和尝试各种代码。我终于注意到是用户表单导致添加约束命令失败。手动删除这些用户表单后,代码运行完美并提供了我需要的反馈。如果有人遇到类似问题,请检查您的工作表中是否有任何异常的附加组件。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。