Я пытаюсь написать макрос цикла Excel, используя функцию Solver в excel.Использование функции Excel solver в петлевом макросе VBA
После каждой итерации в цикле мне нужны формулы на листе, чтобы пересчитать, однако кажется, что когда-то во время цикла вычисление устанавливается на ручное, даже если я не закодировал его для этого (по крайней мере, не намеренно) ,
В идеале я хотел бы, чтобы моя книга вычислила все формулы в начале моей петли до ее использования с помощью функции solver.
Я добавил код, который у меня есть.
Любая помощь будет высоко оценена.
Sub Lineups_Generator()
'
' Lineups_Generator Macro
'
' Keyboard Shortcut: Ctrl+q
Application.ScreenUpdating = False
Sheets("DK Lineups").Select
Range("Output").Select
Selection.ClearContents
E = Range("NumberOFLineups").Value
T = 7
For I = 1 To E
Calculate
SolverOk SetCell:="$Q$12", MaxMinVal:=1, ValueOf:=0, ByChange:="$H$4:$H$203", _
Engine:=2, EngineDesc:="Simplex LP"
SolverSolve Userfinish:=True
Sheets("DK Lineups").Select
Range("Lineup").Select
Application.CutCopyMode = False
Selection.Copy
Cells(T, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
T = T + 1
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
Почему бы не переместить это перед циклом: 'Application.Calculation = xlCalculationAutomatic' ... Кроме того, скопировать копию можно записать в 2 строки:' Таблицы («DK Lineup»). Range («Lineup» ") Копировать (новая строка) Ячейки (T, 1) .PasteSpecial xlPasteValues' –
@ScottHoltzman Я пробовал использовать Application.Calculation = xlCalculationAutomatic до цикла, но это, похоже, не работает. У меня был этот код в конце, потому что, когда я закончил работу с макросом, вычисления всегда были настроены на ручной, что заставляет меня поверить, что в какой-то момент цикла цикл вычисляется как ручной. – VincentR
Вы пропустили его по очереди и действительно видите, какая строка задает значение calcs to manual? –