循环求解器选择性崩溃excel的vba代码?

循环求解器选择性崩溃excel的vba代码?,vba,excel,crash,solver,Vba,Excel,Crash,Solver,我有一个问题,我希望有人能帮我解决。我把一些vba代码放在一起,让excel循环求解器(设置为进化方法)。代码如下: Sub Repeat_Solver() Worksheets("DC Ranking by CM (All DC costs)").Activate limit = 148 i = 147 Application.ScreenUpdating = True Do Until i = limit If Range("B

我有一个问题,我希望有人能帮我解决。我把一些vba代码放在一起,让excel循环求解器(设置为进化方法)。代码如下:

Sub Repeat_Solver()

    Worksheets("DC Ranking by CM (All DC costs)").Activate
    limit = 148
    i = 147

    Application.ScreenUpdating = True

    Do Until i = limit

        If Range("BV" & i).Value = "Y" Then

            SolverReset

            SolverOk SetCell:="$EQ$" & i, MaxMinVal:=1, ValueOf:=0, ByChange:="$CA$" & i, _
                     Engine:=3, EngineDesc:="Evolutionary"

            SolverAdd CellRef:="$CG$" & i, Relation:=3, FormulaText:="45"
            SolverAdd CellRef:="$CH$" & i, Relation:=1, FormulaText:="0.4"
            SolverAdd CellRef:="$CA$" & i, Relation:=1, FormulaText:="$E$" & i
            SolverAdd CellRef:="$CA$" & i, Relation:=4, FormulaText:="integer"

            SolverOptions MaxTime:=60, Iterations:=200, Precision:=0.000001, _
                          AssumeLinear:=False, StepThru:=False, Estimates:=1, _
                          Derivatives:=1, SearchOption:=1, IntTolerance:=1, _
                          Scaling:=False, Convergence:=0.000001, AssumeNonNeg:=True, _
                          PopulationSize:=100, RandomSeed:=0, MutationRate:=0.075, _
                          Multistart:=False, RequireBounds:=False, MaxSubproblems:=3, _
                          MaxIntegerSols:=2, SolveWithout:=False, MaxTimeNoImp:=30

            SolverOk SetCell:="$EQ$" & i, MaxMinVal:=1, ValueOf:=0, ByChange:="$CA$" & i, _
                     Engine:=3, EngineDesc:="Evolutionary"

            SolverOk SetCell:="$EQ$" & i, MaxMinVal:=1, ValueOf:=0, ByChange:="$CA$" & i, _
                     Engine:=3, EngineDesc:="Evolutionary"

            SolverSolve UserFinish:=True
            SolverFinish KeepFinal:=1
            i = i + 1

        Else
            i = i + 1
        End If

    Loop

End Sub
当我设置
limit=147
I=146
(仅为第146行运行它)时,它会工作-但出于某种奇怪的原因,当我为
limit=148
I=147
运行它时(如上面的代码所示),它会暂停“设置问题…”。。。33%,然后excel停止响应

我甚至尝试在第147行手动运行solver(没有vba代码),但仍然存在同样的问题—excel崩溃。(奇怪的是,如果我将“解算器”设置为GRG非线性,而不是进化,它似乎确实起作用。)

有人知道我做错了什么吗?提前感谢您的帮助