2017-06-15 27 views
0

我有這樣的代碼,我刷新的QueryTable:MSGBOX後的QueryTable刷新完成

Sub refreshCD()  
    ActiveWorkbook.Connections("CD").Refresh 
End Sub 

我怎樣才能顯示一個MsgBox後刷新完成?我試圖在刷新後立即放置它,但顯然它在完成之前運行,因爲沒有任何回調或類型。

我已閱讀過有關DoEvents(),但我無法很好地理解或應用該方法,並且不知道這是否正確的方法。

任何想法?

+0

你可以嘗試把它在一個Worksheet_Change或Worksheet_TableUpdate。 – Jeeped

+0

Thanks @Jeeped如果用戶點擊「更新」按鈕並且沒有對數據進行任何更改(源和Excel在更新時是相同的),此項工作是否會發生? – SoMeGoD

+0

刷新不會更新單個單元格;而是重寫整個查詢表區域。 – Jeeped

回答

1

你可以創建一個類模塊和下沉的QueryTable的事件,你都可以刷新之前和之後都有,像這樣

Private WithEvents qtCustom As QueryTable 

Public Function Initialise(qtInput As QueryTable) 
    Set qtCustom = qtInput 
End Function 

Private Sub qtCustom_AfterRefresh(ByVal Success As Boolean) 
    ' After Refresh 
End Sub 

Private Sub qtCustom_BeforeRefresh(Cancel As Boolean) 
    ' Before Refresh 
End Sub