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