• 締切済み

エクセルのマクロでのソルバーの使い方に関して教えてください。

エクセルのマクロでのソルバーの使い方に関して教えてください。 下記のようなソルバーを含むマクロを組んでいます。(一部です。) SolverReset SolverOk SetCell:="$B$10", MaxMinVal:=3, ValueOf:="0", ByChange:="$M$46" a = SolverSolve(True) If a = 0 Then SolverFinish KeepFinal:=1 Else SolverFinish KeepFinal:=0 End If ソルバーを起動させ、"B10"が0になるように計算させ、 ソルバーの返り値をaに入れます。このとき、a=0の場合は、つまり最適値を得た場合のみ, 解を保存したく、a=0の場合、SolverFinish KeepFinal:=1で、保存するようにしています。  しかし、実際は、a=0の場合でも解を保存してしまい、元の値に戻せていません。  最適値を得られなかった場合に、元の値に戻したい場合は、どのように記載すれば良いでしょうか?  よろしくお願いします。

みんなの回答

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

エクセルのヘルプより KeepFinal 省略可能です。バリアント型 (Variant) の値を使用します。指定できる値は 1 または 2 です。1 を指定するか省略すると、解が変化させるセルに書き込まれ、元の値を置き換えます。2 を指定すると、解を破棄し、変化させるセルの値は元の値に戻ります。 ですのでKeepFinal:=0じゃなくてKeepFinal:=2じゃないですか