2016-08-11 5 views
0

異なる確率でさまざまなケースを実行する次のマクロがあります。基本的には、さまざまなケースのシナリオで、3つの異なるセルの値をインクリメントし、そのあとでベストリターンを計算するソルバーを取得することによって、216ケース(4回それぞれ)を実行します。これは1回の反復でうまく動作しますが、問題が発生する箇所は864回です。ループとソルバーダイアログボックス(Excel VBA)

各反復の後、ソルバーが最良の一致を見つけ、何をしたいと言っているかを示すダイアログボックスが表示されます。私の質問は、ポップアップを無効にする方法がある場合ですか?

コード:

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 

システム情報:エクセル2010

答えて

0

だから、答えは変更を含めることで、私は周りを見ていたし、最善の解決策は、Eyanノローニャの答えhere

から来ていますSolverSolve~SolverSolve (True)。これにより、ダイアログボックスを表示せずにソルバーがループを継続して実行できるようになります。

関連する問題