【问题标题】:Update status bar within a custom function在自定义函数中更新状态栏
【发布时间】: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


【解决方案1】:

更新状态栏后只需添加DoEvents

【讨论】:

【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-11
    • 1970-01-01
    • 1970-01-01
    • 2021-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多