在循环VBA宏中使用Excel求解器函数

时间:2015-12-02 16:31:55

标签: excel vba solver

我正在尝试使用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

1 个答案:

答案 0 :(得分:0)

ScreenUpdating = False是问题吗?我记得曾经有过这个问题。

代码可能正在尝试使用显示的内容,这些内容可能是在幕后计算的,但似乎没有计算出来。 在ScreenUpdating语句之前尝试Rem(')来检查这个...记住步骤到... = True行只运行该行以确保SU设置为更新。希望有意义