1

関数 foo(文字列としてのバー、文字列としてのオプションの baz) があるとしましょう。これは、いくつかの非常に重い作業 (データベースへの接続など) を行います。私たちが目にしている問題は、[関数の引数] ダイアログが表示され (数式の横にある [Fx] アイコンをクリックしてそのダイアログを表示することにより)、ユーザーが bar の値を入力すると、Excel が待機せずにすぐに関数を実行することを決定することです。ユーザーは baz の値を入力するか、[OK] を押します。ユーザーがこのダイアログを使用して基本的に何もしていないことを UDF で検出する方法はありますか? スクリーンショットでは、バーの値が入力されると、左下隅に数式の結果が表示されることがわかります。

ここに画像の説明を入力

4

1 に答える 1

3

私の UDF ページから:
Excel ユーザー定義関数
関数ウィザードから VBA UDf が呼び出されていることを検出するには、このコードを UDF に追加します。

If (Not Application.CommandBars("Standard").Controls(1).Enabled) Then Exit Function

このコードは、関数ウィザードを使用するときにツールバーのほとんどのアイコンが無効になっているという事実に依存しています。

Windows API を使用して、Function Wizard ウィンドウが表示されていて、現在の Excel プロセスと同じプロセス ID を持っているかどうかを確認することでも解決できます。

于 2013-09-10T12:59:46.833 に答える