Excel VBA - 调用宏在几秒后清除状态栏

3
我正在尝试找出一种方法,在执行另一个宏之后调用宏来清除状态栏。我意识到我可以简单地使用以下内容:
Application.Wait(Now + TimeValue("00:00:05"))
Application.StatusBar = False

然而,我想做的是让我的原始宏在结束时说出以下内容:
Application.StatusBar = "Macro Function Complete."
Call clearStatusBar
End Sub

Sub clearStatusBar()
'I do not want the application.wait here because it locks up the excel program. 
Application.Wait(Now + TimeValue("00:00:05"))
Application.StatusBar = False
End Sub

有没有一种方法可以延迟“Application.StatusBar = False”的时间,同时仍然允许用户访问程序?
如果需要更多的解释,请告诉我。感谢您的帮助。

2
前往 MSDN 并查找 Application.OnTime。 - Sorceri
2个回答

7

enter image description here

Sub TestClearStatusBar()
    Application.StatusBar = "Testing: ClearStatusBar"
    ClearStatusBar
End Sub

Sub ClearStatusBar(Optional ClearStatusBar As Boolean)
    If ClearStatusBar Then
        Application.StatusBar = False
        MsgBox "Cleared"
    Else
        Application.OnTime Now + TimeValue("00:00:05"), "'ClearStatusBar True'"
    End If
End Sub

2

Sorceri能够为我提供正确的方法。通过使用Application.OnTime方法,您可以在不卡住程序的情况下延迟调用宏。

Application.StatusBar = "Macro Function Complete."
Application.OnTime Now + TimeValue("00:00:07"), "clearStatusBar"
End Sub

Sub clearStatusBar()
Application.StatusBar = False
End Sub

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接