Solverによるシミュレーション6~マクロ編~

前回は2つ記録マクロを操作しました

2つのマクロは以下の点で条件が違っています

➀目的セル、変数セル、及び制約条件を指定するセルの行位置が違う

②目標値の設定の仕方が違う;シナリオ1/最大値、シナリオ2/指定値

③制約条件の符号が違う:シナリオ1/<=、シナリオ2>=

記録したマクロのコードを比較して、上記の違いがどう反映されているかを見てみましょう!

上がシナリオ1で下がシナリオ2です

おおよそ、黄色の目印を付けたうち、どこが変数で置き換えられるか見当がついたと思いますが、今回は前回作成したシナリオ1マクロを以下の3つ、

1.SetCell(目的セル)、2.ByChange(変数セル)、3CellRef(制約条件セル)

それぞれを変数で置き換えてマクロを動かせるようにしましょう!

1.範囲を指定できるようにしておく

今回はC2セルで1を選んだら上の行を操作する(前回のシナリオ1)、2を選んだら下の行を操作するようにします

2.ではシナリオ1の前に、IF構文を配置し、C2セルに応じて前述の1~3の範囲を動かせるようにします

If mySheet.Range(“C2”).Value = “1” Then ~ else ~

2.マクロに変数をセットしてマクロを実際に動かす

➀If構文で変数を可変にする

②ソルバーのコードに変数を設定する

各X1、X2を1に直しながら、マクロを試してみてください

<まとめ>

今回は、前回操作した記録マクロの範囲(以下の3つの範囲)を事前に指定できるようにしました

1.SetCell(目的セル)、2.ByChange(変数セル)、3CellRef(制約条件セル)

次回はいよいよ、ループ処理により、複数のシミュレーションを一気に走らせることができるようにします!

にほんブログ村 資格ブログ ビジネススキルへ
にほんブログ村 IT技術ブログ VBAへ


にほんブログ村

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です