2017-03-23 314 views
0

我有一個宏在excel中運行工作表,其中顯示的數據連接到外部數據庫。我試圖在數據源更新時刷新顯示的數據,而這些數據都是在宏運行時顯示的。要清楚,通過「運行」,我的意思是宏在工作簿中顯示每張表幾秒鐘,然後循環。VBA excel運行宏

下面是代碼:

Option Explicit 
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As    
Long) As Integer 


Public Sub Switch() 
Dim ws As Worksheet 

    Do 
     For Each ws In ThisWorkbook.Worksheets 
     ws.Activate 
     Application.Wait Now() + TimeValue("00:00:05") 
     If GetAsyncKeyState(vbKeyShift) Then Exit Sub 
     DoEvents 
     Next ws 
    Loop 

End Sub 

我曾嘗試之前「下一步WS」插入ActiveWorkbook.RefreshAll,我也試過ThisWorkbook.RefreshAll在同一位置。到目前爲止,當我被告知數據已經更新時,我停止了宏的運行,這可以讓數據刷新,然後再次運行宏。這是我想要避免必須做的。

非常感謝您的幫助。

感謝,

德里克

+2

我幾次讀到你的問題,我仍然不確定你想要做什麼。如果您想等到查詢刷新並繼續,請在查詢表上調用'.Refresh False'。如果您異步刷新不受控制的查詢,請[訂閱他們的'AfterRefresh'事件](http://stackoverflow.com/q/26983053/11683)。 – GSerg

+0

嗨GSerg,所以當我運行這個宏時,它通過每張表單播放5秒,然後循環播放,就像看幻燈片一樣。在運行時,來自服務器的數據(即正在牀單上顯示的數據)每天更新一次或兩次。我希望宏在運行時刷新以顯示新數據。 –

回答

0

您可以打開屏幕宏的執行過程中更新或關閉。宏隨着它運行會變慢。

Application.ScreenUpdating = True 
+0

嗨Kev,好的,謝謝!我會嘗試一下。 –