2016-11-03 127 views
0

我想知道是否有一種方法來調用宏來清除狀態欄後執行不同的宏。我意識到,我可以簡單地使用:Excel VBA - 幾秒鐘後調用宏來清除狀態欄

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 

是否有延遲「應用程序的方式。 StatusBar = False「,同時仍然允許用戶訪問該程序?

讓我知道你是否需要更清晰。謝謝你的幫助。

+2

轉到MSDN並查找Application.OnTime – Sorceri

+0

欣賞方向。看起來被解決了! – Citanaf

回答

2

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 
+0

感謝您的回答。我也回答了這個問題,但我認爲人們應該檢查你的視覺。 – Citanaf

+0

我想我更喜歡你的答案......大聲笑+1 – 2016-11-03 21:15:10

1

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