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在同一位置。到目前为止,当我被告知数据已经更新时,我停止了宏的运行,这可以让数据刷新,然后再次运行宏。这是我想要避免必须做的。
非常感谢您的帮助。
感谢,
德里克
我几次读到你的问题,我仍然不确定你想要做什么。如果您想等到查询刷新并继续,请在查询表上调用'.Refresh False'。如果您异步刷新不受控制的查询,请[订阅他们的'AfterRefresh'事件](http://stackoverflow.com/q/26983053/11683)。 – GSerg
嗨GSerg,所以当我运行这个宏时,它通过每张表单播放5秒,然后循环播放,就像看幻灯片一样。在运行时,来自服务器的数据(即正在床单上显示的数据)每天更新一次或两次。我希望宏在运行时刷新以显示新数据。 –