Excel c/c++ sdk >= 2007 (参照用に 2007 のリンクを掲載) および Excel >= 2007を使用しています。関数 F を優れたものにするために提供するxll を (sdk を使用して) コーディングしましたが、この関数 F はExcelシートで2つの方法で呼び出すことができます:1)Excelセル/セル範囲または数式バーにFを含む数式を直接書き込みます2) Excelセルに書き込み=F
、数式の左側にあるfxアイコンをクリックしますbar と Excel の関数ウィザードを使用します。
私が興味を持っているのは2番目のケースだけです。この場合、これは Excel の関数ウィザードのダイアログ ボックスを開きます: n 個のセルを含むウィンドウで、それぞれが F の 1 つの引数に対応します (F が n 個の引数をとる関数であると仮定します)。デフォルトでは、セルの 1 つに何かを入力すると、Excel は関数の再計算をトリガーします。
これは、関数を知らず、「それを発見」したい場合に特に便利です。入力したものが F などの正しい引数を表しているかどうかを確認できるためです。たとえば、エラーが表示されるなどです。
しかし、F が (C++ で) 非常に集約的な数値ルーチンに依存している場合、すべての再計算に時間がかかりすぎて、ウィザードがフリーズします。(ダイアログ ボックス内のセルが変更されるたびに、再計算がトリガーされるため)。
したがって、私は次のことをしたいと思います:関数ウィザードを介して関数が「呼び出された」ときに、何らかの方法で再計算を無効にします。これは、低品質のソリューションとしましょう。
理想的には、私は次のことをしたいと思います: トリガーされる再計算を自動化しますが、ウィザードが呼び出されるスレッドとは別の「スレッド」で (C++ Excel SDK コードで) 実行されるようにします。これ以上凍結しないように。(ウィザードの便利な部分を保存できるようにするためです。)どうやら、このmsdnの記事を正しく理解していれば(同じ問題ではない場合はそうではないかもしれません)、Excel 2007では不可能ですが、Excelでは可能です> = 2010年。
F のユーザーはさまざまなバージョンの Excel を使用しているため (主に 2007 年ですが、中には 2003 年のものもあります)、たとえ私が 2010 年に移行したいと思ったとしても (さあ、実生活ではすでに 2013 年になっています! )、前述の理由により、私はそれをしませんが、一部のExcelバージョンでのみ機能するものがあるのは満足できないためです...
そこで、別の解決策を見つけたいと思います。これについて RTD について話している人がいると聞きましたが、よくわかりません。
そのため、洞察は大歓迎です。かなり前にthx。(そして質問が長くなってすみません。)