мои ограниченные знания знали, что я могу использовать цикл 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
For...Next
и проверил, что делает код вместе с тем, что происходит на целевом листе. - person Samuel Everson   schedule 15.04.2021