2016-04-09 8 views
0

次のように私は、関数を作成し、メインモジュールでそれを保存:が自動に設定されているアプリケーション.Volatile:期待どおりに機能しないのはなぜですか?

Public Function Teste() As Variant 
    Application.Volatile 
    MsgBox "rodou" 
    Teste = "" 
End Function 

計算オプションを。セルでは、私は、Excelを強制的に、汚れとしての私の機能を設定しますApplication.Volatileので、私は任意のセルを変更するだろう、TESTE機能を実行することを期待し、毎回式(例えば。= TESTE())を配置しました関数を実行します。何が起こる

は、私は、ワークシートの変更イベント(例えば。= TESTE(B2))に更新される細胞のいずれかを入れない限り、TESTE関数は、呼び出されていないことです。

実行するだけですTesteは、ワークシートの変更を行うたびに機能します。

ありがとうございます。

+1

@ Gary'sStudentそれは正しくありません。 Excelは、任意のブック内の任意のセルの任意の変更に対する揮発性関数を再計算します。この動作は、「揮発性」の要点です。実際に私はOPの問題を再現することはできません、私は任意のセルを変更するたびにメッセージボックスを取得します。 – GSerg

+0

ドキュメンテーションによると:「このメソッドは、ワークシートcell___を計算するためにユーザー定義関数__used内にない場合は無効です。 Qeustionは、関数がワークシートのセルで使用されているか、関数がコード内の(別の)ワークシートのセルを変更しているかどうかを示します.Excelは、コンパイル時に関数が動作するかどうかを知ることができます。この関数は、コード内のワークシートのセルを変更しないため、呼び出されない可能性があります。 –

+0

@PaulOgilvieドキュメンテーションは、「このメソッドは、関数がセルに配置されていないと効果がありません。関数を作成し、それをコード内でのみ使用し、決してセルに配置しないと、 'Volatile'は効果を持ちません。また、[VBA機能はどのセルも変更できません](http://stackoverflow.com/q/13705663/11683)。 – GSerg

答えて

0

今すぐ動作しています! VBAコードをコンパイルした後、ワークシートの任意のセルで変更を行うたびに、Teste関数が実行されています。この情報は@Paul Ogilvie(stackoverflow.com/questions/29915312/…)によって共有された投稿にあります。

すぐにご連絡いただきありがとうございます。

関連する問題