【问题标题】:When loop and solver dialogue box (Excel VBA)当循环和求解器对话框(Excel VBA)
【发布时间】:2016-08-16 19:03:15
【问题描述】:

我有以下宏可以针对不同的概率运行各种案例。基本上,它通过增加 3 个不同单元格中的值,然后让求解器计算最佳回报,针对各种案例场景运行 216 个案例(每个案例 4 次)。它适用于 1 次迭代,但有 864 次迭代,这就是问题所在。

每次迭代后,我都会弹出对话框,说求解器找到了最佳匹配,我想做什么。我的问题是是否有任何方法可以禁用弹出窗口?

代码:

Sub Macro9()
'
' Macro9 Macro
'

Application.ScreenUpdating = False
Application.DisplayAlerts = False


Dim a As Integer
Dim b As Integer
Dim c As Integer
Dim d As Integer

a = 0
b = 0
c = 0
d = 1


While a <= 30

    Range("B21") = a

    While b <= 30

        Range("B22") = b

        While c <= 30

            Range("B23") = c

            SolverOk SetCell:="$I$24", MaxMinVal:=1, ValueOf:=0, ByChange:="$B$14:$B$20", _
                Engine:=3, EngineDesc:="Evolutionary"
            SolverSolve
            SolverOk SetCell:="$I$24", MaxMinVal:=1, ValueOf:=0, ByChange:="$B$14:$B$20", _
                Engine:=3, EngineDesc:="Evolutionary"
            SolverSolve
            SolverOk SetCell:="$I$24", MaxMinVal:=1, ValueOf:=0, ByChange:="$B$14:$B$20", _
                Engine:=3, EngineDesc:="Evolutionary"
            SolverSolve
            SolverOk SetCell:="$I$24", MaxMinVal:=1, ValueOf:=0, ByChange:="$B$14:$B$20", _
                Engine:=3, EngineDesc:="Evolutionary"
            SolverSolve

            Cells(27, d) = d

            e = 28

            While e <= 37

                Cells(e, d) = Cells(e - 14, 2)
                e = e + 1

            Wend

            Cells(38, d) = Range("I24")

            c = c + 5
            d = d + 1

        Wend

        b = b + 5
        c = 0

    Wend

    a = a + 5
    b = 0
    c = 0

    Wend

Application.ScreenUpdating = True
Application.DisplayAlerts = True

End Sub

系统信息:Excel 2010

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    所以,我环顾四周,最好的解决方案来自 Eyan Noronha 的回答 here

    答案是将SolverSolve 更改为SolverSolve (True)。这允许求解器继续循环,而不显示对话框。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-08
      • 2011-08-12
      相关资源
      最近更新 更多