Clever-Excel-Forum

Normale Version: Application.OnTime
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo wertes Forum,

ich habe da ein Problem mit Application.OnTime.

Ich habe folgenden Code
Code:
Do
    Counter = Counter + 1
    Debug.Print StrMRPData, Counter
    Application.OnTime Now + TimeValue("00:00:10"), "Y_Prozeduren.Warten"
'    Application.OnTime Now + 10 / 86400, "Y_Prozeduren.Warten"
'    Application.Wait (Now + TimeValue("0:00:10"))
Loop Until DateiGeoffnet = True
Code:
Sub Warten()

'   On Error Resume Next
    DateiGeoffnet = False
    If Not Workbooks(StrMRPData) Is Nothing Then DateiGeoffnet = True
    Debug.Print DateiGeoffnet

End Sub

Egal, wie ich im Application.OnTime die Wartezeit angebe, wird der Prozeduraufruf ignoriert. Selbst wenn ich den Prozedurnamen "Y_Prozeduren.Warten" bewusst verkehrt schreibe, kommt keine Fehlermeldung

Ich habe zu dem Zeitpunkt des Aufrufs mindestens zwei Excel-Instanzen geöffnet. Kann es daran liegen? Wie bekomme ich den Fokus auf die Instanz, in der das Makro läuft? Ich habe 
Code:
    ThisWorkbook.Parent.OnTime Now + TimeValue("00:00:10"), "Y_Prozeduren.Warten"
versucht, aber ebenfalls erfolglos.
Weiterhin wäre wünschenswert, wenn ich beim Aufruf der Prozedur die Variable StrMRPData übergeben könnte, da die Warten-Prozedur für verschiedenen Variablen aufgerufen werden soll. Ich habe keine Ahnung, wie ich das in die Code-Zeile bringen soll.

Vielen Dank für Eure Hilfe,
Lutz
Hi snb,

da habe ich natürlich schon geschaut.
Aber ich bin entweder zu blöd oder zu blind. Ich finde nicht, wie ich mein Problem lösen sollte.

Gruß,
Lutz
Eine Beispieldatei hochladen ?

Applicaion.Ontime ist immer beschränkt zu nur einer Instanz (=Application).
Hallo Snb,

kann ich am Montag machen (bin schon im Wochende  Angel).
Da steht allerdings nur der Code drin.

Die Daten, mit denen ich arbeiten möchte, zieht das Makro aus SAP. Das heißt, zum Zeitpunkt des Problems gibt es keine Beispieldatei.

Was heißt:
Zitat:Applicaion.Ontime ist immer beschränkt zu einer Instanz (=Application).
Application.OnTime geht nur, wenn Max. eine Instanz offen ist?

Gruß,
Lutz
Die gepostete Code war nicht komplett.


Warum arbeitest du mit 2 Instanzen ?
Hallo,

du rufst "Application.OnTime" auf, damit es in 10 Sekunden die Prozedur "Warten" startet.
Soweit ist das ok.
Aber du hast das Ganze in eine "Do ... Loop Until"-Schleife eingebettet, sodass damit Tausende solcher verzögerter Prozeduraufrufe gespeichert werden müssen (innerhalb der 10 Sekunden).
Dadurch wird das System total überlastet, wie man sich im Taskmanager von Windows anschauen kann.

Die Methode "OnTime" des Application-Objektes ist dazu gedacht, EINE verzögerte Prozedurausführung an Windows zu senden.

Ist nach Ablauf der Verzögerungszeit (bzw. des Zutreffens der Zielzeit) irgendeine Excel-Application-Instanz existent/aktiv, werden dort die Auswirkungen der (eventuell versuchten) Ausführung der Prozedur sichtbar. Das kann soweit gehen, dass sich plötzlich eine Arbeitsmappe zurückmeldet, die man schon längst geschlossen geglaubt hat.
Hallo, 19

hier ist "Application.OnTime" gründlich erklärt - mit den Fallstricken. 21

Application.Ontime...
Mich würde ernsthaft interessieren, was Strg+Umschalt+Esc ergibt.
Hallöchen,
Hier mal noch der Ansatz mit dem Parameter:
Code:
Sub TestMeldung()
Application.OnTime Now() + TimeValue("0:00:05"), "'Meldung ""Klappt es?"" '"
End Sub
Sub Meldung(strMsg As String)
MsgBox strMsg
End Sub
Seiten: 1 2