【发布时间】:2021-07-09 20:08:36
【问题描述】:
我有限的知识知道我可以使用 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", 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
【问题讨论】:
-
您是否尝试过单步执行(VBE 中的 F8)您的 Solver 例程以查看代码是否按预期运行?如果不是,我会逐步完成
For...Next的每次迭代,并检查代码在做什么以及目标工作表上发生了什么。 -
嗨@SamuelEverson,不,我还没有这样做。我会用F8检查。谢谢你的建议。
标签: excel vba loops foreach solver