更新自定义功能中的状态栏

时间:2016-04-15 19:36:25

标签: excel vba user-defined-functions statusbar

我有一个自定义函数(UDF),有时需要一段时间才能运行。工作表设置为仅手动刷新。我想在函数运行时在状态栏中显示进度。

在子应用程序.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

2 个答案:

答案 0 :(得分:0)

更新状态栏后,只需添加 DoEvents 即可。

答案 1 :(得分:0)

由于我今天刚刚面对这个问题,尽管我会在这里添加评论。如果在Application.StatusBar命令之前包含DoEvents,则可以解决我的问题。换句话说,这就是我的代码现在的样子:

DoEvents
Application.StatusBar = ">>>>>>> FORMATING: " & Format((current_line - line_start) / (line_end - line_start), "0%") & " completed <<<<<<<"