我正在尝试使用excel中的Solver函数编写Excel循环宏。
在循环中的每次迭代之后,我需要在工作表上重新计算公式,但是在循环期间似乎有时候计算被设置为手动,即使我没有对它进行编码(至少不是故意的)。
理想情况下,我希望我的工作簿在使用求解器函数之前在循环开始时计算所有公式。
我附上了我目前的代码。
非常感谢任何帮助。
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
答案 0 :(得分:0)
ScreenUpdating = False是问题吗?我记得曾经有过这个问题。
代码可能正在尝试使用显示的内容,这些内容可能是在幕后计算的,但似乎没有计算出来。 在ScreenUpdating语句之前尝试Rem(')来检查这个...记住步骤到... = True行只运行该行以确保SU设置为更新。希望有意义