【发布时间】:2016-04-15 19:36:25
【问题描述】:
我有一个自定义函数 (UDF),有时需要一段时间才能运行。工作表设置为仅手动刷新。我想在函数运行时在状态栏中显示进度。
在 subs Application.StatusBar works.
在函数内 Application.StatusBar 似乎不起作用。我已经逐行浏览了代码。状态栏不会更新,也不会抛出任何错误。
有什么东西会阻止状态栏使用函数吗?
我在 Win10 上运行 Excel 2016。
显示代码,带有来自周围编程的上下文:
Function getCost(parameters)
dim variables
dim bOldStatusBar as Boolean
<web query begins>
bOldStatusBar = Application.DisplayStatusBar
Application.DisplayStatusBar = True
Application.StatusBar = "Calculating prices between " & Origin & " and " & Destination & "."
DoEvents
<clicking buttons in IE>
Application.StatusBar = "Starting Data Import..."
<clicking buttons in IE>
Application.StatusBar = "Macro 20% Complete"
etc...
<clicking buttons in IE>
Application.StatusBar = "Macro 100% Complete"
Application.StatusBar = False
Application.DisplayStatusBar = bOldStatusBar
End Function
【问题讨论】:
-
一个函数通常用于计算,而不是改变状态栏
-
@Davesexcel 它也进行计算;我只想在状态栏中显示一些简单的消息,以在计算运行时显示进度。
-
代码是什么样的?
-
@BruceWayne 感谢您发现这一点;这就是我所害怕的,但我找不到任何关于它的东西。我希望有官方文档对此进行解释,但这很有帮助。我确实尝试过;我创建了一个试用子程序,它只测试状态栏——它工作正常——然后当我输入“1”作为参数时尝试在函数中调用它。虽然没有骰子。您链接的论坛帖子也确实提到这似乎也不起作用。
-
@BruceWayne 这可能会起作用,但这相当笨拙......这可能就是我最终会做的事情。要么这样,要么在弹出窗口甚至另一个单元格中创建一个进度条。
标签: excel vba user-defined-functions statusbar