私は現在、外部プログラムの助けを借りていくつかの計算を実行するためにフォームを使用するマクロを持っています。別のプログラム、外部.exeが入力として使用するために、いくつかのワークシート値をファイルに書き込むだけです(そのプログラムはクローズドソースです)。次に、このプログラムはカスタム形式の出力を書き込みます。VBAでそれをスクラップしてから、ワークシートに戻り値を返します。マクロは、送信元と宛先の範囲が指定されているユーザーフォームを介して呼び出されます。
私がやろうとしているのは、ユーザーフォームを介して計算を呼び出す方法をUDFに置き換えることです。GUI方式では、計算の更新は面倒です。また、宛先範囲データでどのような計算が実行されたかを知ることもできません。このパスは、パフォーマンス上の懸念からUDFよりも選択されました。計算が非常に遅いため、外部プログラムをUDFとして呼び出すユーザーフォームコードの一部を再利用して、それを実行することはできません。速度が遅すぎるためです。VBAには非同期実行がないようです(Excel 2010のxllとは対照的です)。
考えられる解決策は、グローバルがtrueに設定されていない限り、実行を開始するとすぐにUDFを終了することです。特定のリボンボタンから再計算が呼び出されない限り、そのグローバルは常にfalseになります。問題は、これが常にUDFを実行し、それらの範囲を常に#N / A値に送信するため、これらの範囲を参照できないことです。もう1つは、偽の数式、つまり、パラメーターと宛先範囲の両方を指定するセルへのコメントを作成することです。これにも多くの問題があります。
それで。偽の非同期計算UDFを実装する方法について何かアイデアはありますか?
ありがとう!