假设我有一个函数foo(bar as String,Optional baz as String),它可以完成一些非常繁重的工作(例如连接到数据库等)。我们看到的问题是,当显示Function Arguments对话框时(通过单击公式旁边的Fx图标以显示该对话框)并且用户输入bar值,Excel决定立即执行一个函数,而无需等待用户输入baz的值或按Ok。有没有办法在UDF中检测到用户使用此对话框基本上什么都不做?在屏幕截图中,您可以看到,只要输入了Bar的值,Excel就会在左下角显示公式结果。
答案 0 :(得分:2)
从我的UDF页面:
Excel User-defined Functions
要检测何时从函数向导调用VBA UDf,可以将此代码添加到UDF
If (Not Application.CommandBars("Standard").Controls(1).Enabled) Then Exit Function
此代码取决于使用功能向导时,工具栏中的大多数图标都被禁用。
通过使用Windows API检查功能向导窗口是否显示并且具有与当前Excel进程相同的进程ID,也可以使用解决方案。