質問: vbaでの、マクロ参照をするソルバー ソルバー中の変数が、マクロを実行した値の場合はどのようにすればいいのでしょうか? たとえば操作するセルを変えても、あるマクロを実行しないと目的のセルが変わらない場合です。 solversolveのshowrefを利用して以下のように書きましたが、最適化はされたと表示されますがマクロを実行してくれませんでした。 sub macro() solverreset solverok setcell:="$c$17", maxminval:=1, valueof:="0", bychange:="$b$17:$b$18" solveroptions maxtime:=900, iterations:=900, precision:=0.01, assumelinear:= _ false, stepthru:=true, estimates:=1, derivatives:=1, searchoption:=1, _ inttolerance:=10, scaling:=false, convergence:=0.1, solversolve userfinish:=false, showref:="macro1"
回答: こんにちは。 >ソルバー中の変数が、~あるマクロを実行しないと目的のセルが変わらない場合です。 こちらのほうは、良く意味が良く分かりません、というか、結果の話ではないでしょうか? そのために、まず、元のマクロのコードが、ちょっと違っているからですね。間違いではなくて、たぶん、時代とともに変化したのかもしれません。そちらを直してから、もう一度、質問を出してください。 もう、こういうのは、ちゃんとしたマニュアルもないので、以前、私が、何度もやってみた結果なのです。 それで、 showref:="macro1" は生きていないのです。しかし、そこは、空にすることはできないので、単なるdummyマクロを置いてあげます。つまり、sub macro1() ~ '[何もない]~ end sub というようなものです。 そして、 solveroptions の stepthru:=true -> false に換えて、 その次に、 solverfinish 1 と置いてから、 次のマクロをサブルーチンなどで置いてやるわけです。 call macro2 (私などは、ここは、通常、コピーをするマクロです) ただ、元のソルバーはちゃんと解が入りますか? 通常は、条件(solveradd)をいれないと、小数点で処理していくはずです。 なお、ソルバーのもとの数式はどうなっているか、想像つきませんでした。たぶん、組み合わせになるのかな?