使用宏跨工作表循环求解器
Loop solver across worksheets using Macro
我有限的知识知道我可以使用 For Each 循环来遍历工作簿的所有工作sheet,并且我可以将求解器记录为宏脚本。但是,当我尝试将这两种方法组合在一起以激活和 运行 每个 sheet 的求解器时,它无法正常工作(有时可以,但不适用于所有 sheets ,或者有时它根本不起作用)。对于为什么此代码适用于某些 sheet 而不是所有 sheet,没有任何控制或反馈。对于有效的工作 sheets,当我检查约束时,有 18(我的工作sheets 的数量)相同的 '$J$4:$J$5 <=1' 条件,而不是只有每件作品一个条件sheet。有没有办法改善这种情况?提前致谢。这是我的代码:
Sub Solver()
Dim wb As Workbook: Set wb = Workbooks("A.xlsx")
Dim sh As Worksheet
For Each sh In wb.Worksheets
SolverOk SetCell:="$J", MaxMinVal:=2, ValueOf:=0, ByChange:="$J:$J", _
Engine:=1, EnineDesc:="GRG Nonlinear"
SolverAdd CellRef:="$J:$J", Relation:=1, FormulaText:="1"
SolverOk SetCell:="$J", MaxMinVal:=2,Valueof:=0, ByChange:="$J:$J", _
Engine:=3, EnineDesc:="Evolutionary"
SolverOk SetCell:="$J", MaxMinVal:=2,Valueof:=0, ByChange:="$J:$J", _
Engine:=3, EnineDesc:="Evolutionary"
SolverSolve True
Next sh
End Sub
经过一周的调查和尝试各种代码。我终于注意到是用户表单导致添加约束命令失败。手动删除这些用户表单后,代码运行完美并提供了我需要的反馈。如果有人遇到类似问题,请检查您的工作表中是否有任何异常的附加组件。
我有限的知识知道我可以使用 For Each 循环来遍历工作簿的所有工作sheet,并且我可以将求解器记录为宏脚本。但是,当我尝试将这两种方法组合在一起以激活和 运行 每个 sheet 的求解器时,它无法正常工作(有时可以,但不适用于所有 sheets ,或者有时它根本不起作用)。对于为什么此代码适用于某些 sheet 而不是所有 sheet,没有任何控制或反馈。对于有效的工作 sheets,当我检查约束时,有 18(我的工作sheets 的数量)相同的 '$J$4:$J$5 <=1' 条件,而不是只有每件作品一个条件sheet。有没有办法改善这种情况?提前致谢。这是我的代码:
Sub Solver()
Dim wb As Workbook: Set wb = Workbooks("A.xlsx")
Dim sh As Worksheet
For Each sh In wb.Worksheets
SolverOk SetCell:="$J", MaxMinVal:=2, ValueOf:=0, ByChange:="$J:$J", _
Engine:=1, EnineDesc:="GRG Nonlinear"
SolverAdd CellRef:="$J:$J", Relation:=1, FormulaText:="1"
SolverOk SetCell:="$J", MaxMinVal:=2,Valueof:=0, ByChange:="$J:$J", _
Engine:=3, EnineDesc:="Evolutionary"
SolverOk SetCell:="$J", MaxMinVal:=2,Valueof:=0, ByChange:="$J:$J", _
Engine:=3, EnineDesc:="Evolutionary"
SolverSolve True
Next sh
End Sub
经过一周的调查和尝试各种代码。我终于注意到是用户表单导致添加约束命令失败。手动删除这些用户表单后,代码运行完美并提供了我需要的反馈。如果有人遇到类似问题,请检查您的工作表中是否有任何异常的附加组件。