プロが教えるわが家の防犯対策術!

エクセルでVBAを利用して自作関数を作りました。
この関数はシートの値の内容によって異なる結果を返す内容になっています。

で、この関数をセルから呼び出しているのですが、シートの値を変更した時に、もともと用意されている関数なら自動的に再計算されますが、自作関数は再計算されませんでした。

仕方がないので、再計算させたいときには関数を使用しているセルを編集状態にして何も編集せずにenterを押し再計算させています。

これを何かの機能で再計算させる方法を教えてください。よろしくお願いします。

A 回答 (2件)

こんにちは。



その関数にVolatileメソッドをいれて自動再計算関数にしてみてください。

例えば、
--------------------------------------------
Function myFunc(a As Range, b As Range)

  Application.Volatile

  myFunc = a.Value + b.Value

End Function
--------------------------------------------

以上です。
 
    • good
    • 1
この回答へのお礼

コニチハ。

Volatile メソッド
ユーザー定義関数を自動再計算関数にします。自動再計算関数は、ワークシートのいずれかのセルで計算が行われるたびに再計算を行います。これに対して非自動再計算関数では、入力した変数の値が変わったときにだけ再計算を行います。


なるほど。これを書かないということは、「再計算をしない」と明示的に指定しているようなものなのですね。ばっちり対応できました。

VBA自体は自作関数は素人くんなので大変助かりました。ありがとうございました。

お礼日時:2006/05/15 18:51

なぜ計算されないかは分りませんが...


F9(再計算)キーで計算できませんか?
    • good
    • 0
この回答へのお礼

ありがとうございます。
今回の例では効き目なしでした…。
これは普通の関数のときに使うのですか?

お礼日時:2006/05/15 19:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!