• ベストアンサー

VBAのFunction内でのセル値書き換え

Excel上でVBAを使ってある値を求めるユーザー定義関数を 自作しようとしています。 その関数の中でワークシートの中のセル値を書き換えようとしましたが そこでプログラムは停止してしまいます。 エラーメッセージなどは無く、VBAプログラムが終了します。 サブプロシージャの中でなら当然書き換えはできるのですが、 関数の中でセル値を書き換えることはできないのでしょうか? 環境はWinXP SP2, Office 2000です。 どなたか分かる方、教えていただけると幸いです。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 どうも具体性がないので良く分からないのですが、ソルバーの実行をどのようにしているかではないでしょうか? 書き換え自体は、最初からマクロでソルバーを動かせばよいし、そうでなければ、どの道、セルが変化するのですから、Worksheet_Change イベントを用いれば済むように思います。ただし、ソルバーは、解の見つからない場合を想定しておかないと、こちらの思惑では動かないことがあります。 そうでなくて、繰り返し計算なら、循環参照を作って回数を入れれば済むと思います。

funifuni11
質問者

補足

アドバイスありがとうございました。 結局、マクロで全部を動かすことにしました。

その他の回答 (1)

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

ワークシート関数で他のセルの値を書き換えられないのと 同じです。 何ゆえユーザー定義関数で行いたいのでしょう?

funifuni11
質問者

補足

そうなんですか… やりたいことは、繰り返し計算を必要とする式を、 関数内でソルバを用いて解いて、 自作ワークシート関数の戻り値として利用したいのです。 ソルバ実行前にソルバのパラメータが参照しているセルを書き換えたいのです。 何かうまい解決法があればぜひ教えていただきたいです。

関連するQ&A