Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Application.OnTime
#1
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
Antworten Top
#2
Schau mal:

https://www.snb-vba.eu/VBA_Application.OnTime_en.html
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#3
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
Antworten Top
#4
Eine Beispieldatei hochladen ?

Applicaion.Ontime ist immer beschränkt zu nur einer Instanz (=Application).
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#5
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
Antworten Top
#6
Die gepostete Code war nicht komplett.


Warum arbeitest du mit 2 Instanzen ?
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#7
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.
Mit lieben Grüßen
Anton.

Windows 10 64bit
Office365 32bit
Antworten Top
#8
Hallo, 19

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

Application.Ontime...
________
Servus
Case
Antworten Top
#9
Mich würde ernsthaft interessieren, was Strg+Umschalt+Esc ergibt.
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#10
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
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste