2017-03-23 15 views
0

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

+2

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

+0

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. –

Antwort

0

können Sie drehen Bildschirm während der Ausführung des Makros Aktualisierung ein- oder ausgeschaltet. Das Makro wird langsamer ausgeführt.

Application.ScreenUpdating = True 
+0

Hallo Kev, Okay danke! Ich werde es versuchen. –

Verwandte Themen