Ich habe ein Makro läuft Blätter in Excel, wo die Daten angezeigt wird, ist mit einer externen Datenbank verbunden. Ich versuche, die Daten, die aktualisiert werden, während die Datenquelle aktualisiert wird, während das Makro ausgeführt wird. Um klar zu sein, ich meine, dass das Makro jedes Blatt in der Arbeitsmappe für einige Sekunden anzeigt und nur loopt. HierVBA für Excel läuft Makros
ist der Code:
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
ich versucht habe ActiveWorkbook.RefreshAll kurz vor ‚Next ws‘ einzufügen, und ich habe auch versucht, ThisWorkbook.RefreshAll an der gleichen Stelle.
Ab jetzt, wenn mir gesagt wird, dass die Daten aktualisiert wurden, stoppe ich das Makro ausgeführt, wodurch die Daten aktualisiert werden, dann ich das Makro erneut ausführen. Das versuche ich zu vermeiden.
Vielen Dank im Voraus für Ihre Hilfe.
Danke,
Derek
Ich habe Ihre Frage mehrere Male gelesen und bin mir immer noch nicht sicher, was Sie versuchen zu tun. Wenn Sie warten möchten, bis eine Abfrage aktualisiert und fortgesetzt wird, rufen Sie '.Refresh False 'in der Abfragetabelle auf. Wenn Sie Abfragen, die Sie nicht selbst steuern, asynchron aktualisieren, [abonnieren Sie das Ereignis 'AfterRefresh'] (http://stackoverflow.com/q/26983053/11683). – GSerg
Hallo GSerg, also, wenn ich das Makro laufen lasse, wird es 5 Sekunden lang durch jedes Blatt gespielt und durchläuft es, genau wie eine Diashow. Während dieses Vorgangs werden Daten vom Server, bei denen es sich um die Daten handelt, die auf den Blättern angezeigt werden, ein- oder zweimal am Tag aktualisiert. Ich möchte das Makro aktualisieren, während es ausgeführt wird, um die neuen Daten anzuzeigen. –