excel - 使用宏跨工作表的循环求解器
问题描述
我有限的知识知道我可以使用 For Each 循环遍历工作簿的所有工作表,并且可以将求解器记录为宏脚本。但是,当我尝试将这两种方法结合在一起以激活和运行每张工作表的求解器时,它不能正常工作(有时它可以工作但不能在所有工作表上工作,或者有时它根本不起作用)。没有控制或反馈为什么此代码适用于某些工作表而不是所有工作表。对于有效的工作表,当我检查约束时,有 18 个(我的工作表数量)相同的 '$J$4:$J$5 <=1' 条件,而不是每个工作表只有一个条件。有没有办法改善这种情况?提前致谢。这是我的代码:
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", MaxMinVal:=2,Valueof:=0, ByChange:="$J$4:$J$5", _
Engine:=3, EnineDesc:="Evolutionary"
SolverOk SetCell:="$J$8", MaxMinVal:=2,Valueof:=0, ByChange:="$J$4:$J$5", _
Engine:=3, EnineDesc:="Evolutionary"
SolverSolve True
Next sh
End Sub
解决方案
经过一周的调查并尝试了各种代码。我终于注意到是用户表单导致添加约束命令失败。手动删除这些用户表单后,代码可以完美运行并提供我需要的反馈。如果有人遇到类似问题,请检查您的工作表中是否有任何不寻常的插件。
推荐阅读
- git - Git嵌套子模块无法克隆
- python - 通过 Python 更新现有的 excel 文件
- java - Okhttp 将 Response 转换为 Spring ResponseEntity
- java - 如何在现有字符串中添加空格?
- java - 属性 quarkus.http.ssl.certificate.key-store-file 无法使用无法找到请求目标的有效证书路径
- sql - 合并表postgresql中相同的行
- sql - 在 BigQuery 中按顺序添加带有编号的临时列
- api - 应用运行时 Flutter Google Map API 问题
- java - Spring集成使异步网关等待聚合结果
- mpi - 即使我们有单节点多 GPU 设置,也限制 MPI 在单 GPU 上运行