2017-06-15 48 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 
相关问题