Excel:VBA和refreshall结束消息?

这是Excel 2003.我想知道需要多长时间才能完成外部查询,然后使用该ET更新电子表格中的单元格。 我有以下几点,但是它不起作用,因为ET只有刷新刷新的时间:

Sub Refresh() Dim StartTime, EndTime, ET StartTime = Timer ActiveWorkbook.RefreshAll EndTime = Timer ET = Format(EndTime - StartTime, "Fixed") Range("H27").Value = ET MsgBox (ET) End Sub 

所以即使取数据需要10分钟,ET仍然是1秒左右。

简单的解决方法是将背景刷新设置为false,但是这会阻止整个应用程序,使得人生很长一段时间。

是否有某种信号或exception,我可以在VBA中捕捉到,指出“哦,后台刷新完成,现在你可以停止你的计时器和计算外汇”?

谢谢!

我想你需要使用AfterRefresh事件。
这是一个有着愉快结局和例子的论坛讨论。

从引用的页面粘贴示例,仅用于链接独立性(您应该添加定时器存储和算术):

这段代码放在一个模块上:

 Dim X As New Class1 Sub Initialize_It() Application.DisplayAlerts = False Application.ScreenUpdating = True diropen = "C:\Desktop\" Workbooks.Open diropen & "Test.xls" , UpdateLinks:=0 Set X.qt = Workbooks("Test.xls").Sheets("Sheet1").QueryTables(1) ActiveWorkbook.RefreshAll End Sub 

这段代码放在一个Class Module中:

 Public WithEvents qt As QueryTable Private Sub qt_AfterRefresh(ByVal Success As Boolean) ' Declare variables. Dim a As Integer Dim My_Prompt As String ' Initialize prompt text for message box. My_Prompt = "Data refreshed or canceled." ' Displays message box before refresh (or cancel) occurs. MsgBox My_Prompt ActiveWorkbook.Save Workbooks("Test.xls").Close End Sub