当所有非可选参数被填充时,Function Arguments对话框执行UDF

比方说,我有一个函数foo(bar作为string,可选baz作为string),这有一些非常繁重的工作(例如连接到数据库等)。 我们看到的问题是,当显示Function Arguments对话框时(通过点击公式旁边的Fx图标来调出对话框),并且用户input一个值,Excel决定立即执行一个function,而不用等待用户inputbaz的值或按Ok键。 有没有办法在UDF中检测到用户正在使用这个对话框基本上不做任何事情? 在屏幕截图中,您可以看到一旦inputBar的值,Excel将在左下angular显示公式结果。

在这里输入图像说明

从我的UDF页面:
Excel用户定义的函数
要检测函数向导何时调用VBA UDf,可以将此代码添加到UDF中

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

此代码取决于使用function向导时,工具栏中的大多数图标被禁用的事实。

通过使用Windows API来检查function向导窗口是否显示并具有与当前Excel进程相同的进程ID,也可以使用一种解决scheme。