Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1648to1652
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Kann man eine Stop-Zeit programmieren?

Kann man eine Stop-Zeit programmieren?
02.10.2018 13:33:24
Oisse
Hallo Zusammen,
wenn ich ein "Stop" im Code setze wird der Code hier angehalten. Wie schaffe ich es, dass der Code nach ca 1 Sek wieder weiter läuft.
Zur Erklärung:
In meinem Code holt sich Excel von Google die Distanzen zweier Orte.
(Siehe meine Frage weiter unten in der Forumsliste)
Dazu wird logischerweise Zeit benötigt. Wenn ich es aber mit Application.Wait probiere, kommen keine Daten.
Wenn ich dagegen ein Stop oder eben einen Haltepunkt setze, ca 1 Sec warte und dann auf Fortsetzen klicke, kommen die Daten einwandfrei.
Deshalb meine Frage.
Wie schaffe ich es, dass nach einem Stop der Code nach ca 1 Sec weiterläuft?
Gruß Oisse

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kann man eine Stop-Zeit programmieren?
02.10.2018 13:47:01
ransi
HAllo,
Versuch doch mal sowas:
Option Explicit



Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sub mach_was()
    MsgBox "Los"
    Sleep 5000
    MsgBox "5000 Millisekunden sind um"
End Sub


ransi
Anzeige
AW: Kann man eine Stop-Zeit programmieren?
02.10.2018 13:57:57
Oisse
Hallo ransi,
danke für die Antwort. Das habe ich schon getestet, funktioniert aber leider nicht.
Ich habe auch schon folgendes probiert:

Do
Sleep 700
Loop Until objXML.Busy = False

Funktioniert aber leider auch nicht, obwohl die Schleife durchlaufen wird.
Wenn ich aber danach ein Stop setze und dann mit F5 wieder starte funktioniert alles wie geschmiert.
Noch ne Idee?
Gruß Oisse
AW: Kann man eine Stop-Zeit programmieren?
02.10.2018 13:55:49
daniel
Hi
das Problem ist, dass bei WAIT dein Excel komplett einfriert.
probiers mal so, an der stelle, an welcher gewartet werden soll:
dim T as double
T = Timer + 1 'länge der Wartezeit in Sekunden
Do while timer 

bei DoEvents schaut Excel nach, ob irgendwas außerhalb des Makros passiert ist und führt es aus.
(Dh. es wäre sogar möglich, mit Excel normal weiter zu arbeiten, während so ein Makro mit einer DoEvent-Schleife läuft)
ggf könntest du auch nach dem DoEvents prüfen, ob deine Ergebnisse inzwischen eingetroffen sind, so dass du keine feste Wartezeit einstellen musst
(Achtung, dieser Code sollte nicht über Mitternacht laufen, da dann der Timer wieder auf 0 zurückgesetzt wird)
die andere Alternative wäre folgende:
1. Teile den Code in zwei Makros auf, den ersten Teil bis zur Stop-Stelle, den zweiten Teil ab der Stopstelle.
Variablen, die in beiden Markos benötgit werden, müsstest du als Modul-oder Projektweit gültige Variablen deklarieren (Deklaration oberhalb der Makros.
2. Rufe dann als letzten Befehl im ersten Makro das zweite Makro mit Application.Ontime und der entsprechenden Zeitverzögerung auf:
Application.Ontime Now + TimeSerial(0, 0, 2), "Makro2"
End Sub
beachte hierbei, dass hier mit Uhrzeiten mit ganzen Sekunden gearbeitet wird, dh wenn du nur eine Sekunde als Differenz angibst, kann die Wartezeit deutlich kürzer sein, je nachdem wieviel Zeit der Sekunde bei Aufruf schon verstrichen ist.
Gruß Daniel
Anzeige
AW: Kann man eine Stop-Zeit programmieren?
02.10.2018 14:05:15
Oisse
Hallo Daniel,
danke für die super Antwort(1), die funktioniert.
Ich habe den Timer auf 0,9 gestellt, das ist die kleinste Zeit, bei der alles funktioniert, darunter gehen Daten verloren.
Du hast geschrieben, dass ich eventuell den Timer nicht brauche.
Wie muss der Code dann lauten?
Nochmals vielen herzlichen Dank. Ich war seit gestern nachmittag am suchen und probieren.
Gruß Oisse
AW: Kann man eine Stop-Zeit programmieren?
02.10.2018 14:17:41
daniel
Hi
weiß ich nicht, ich kenne mich mit der Datenübernahme aus dem Internet nicht aus.
Das musst du besser wissen, weil du das verwendest.
aber generell ist es so, dass wenn man abwarten muss, bis ein bestimmtes Ereignis eingetroffen ist und man überprüfen kann, ob es eingetroffen ist, dass man eben dies tun sollte und und die Schleife dann vorzeitig abbricht.
macht man im richtigen Leben ja auch.
Wenn du jemanden vom Bahnhof abholen sollst und mal ne Halbe Stunde Wartezeit einplanst falls der Zug Verspätung hat, dann wartest du die halbe Stunde ja auch nicht ab, falls der Zug pünktlich ist.
Ebenso wäre es doof wenn der Zug nach 31 min kommt, du dann aber schon nicht mehr da bist, weil du nur 30 min gewartet hast.
Gruß Daniel
Anzeige
Warum ein 2ter Thread?
02.10.2018 14:16:04
EtoPHG
Dein Thread weiter unten bitte schliessen, wenn du das Problem nun neu beschreibst.
Tipp: Versuch anstelle eines "POST" ein "GET", dann müsste der Code eigentlich automatisch warten, bis der ganze HTTP-Response zurückgeliefert ist.
Gruess Hansueli
wie prüft man ob ein Event zu Ende ist?
02.10.2018 14:33:46
Oisse
Danke für den Hinweis.
"Get" habe ich ausprobiert, funktioniert aber nicht.
Aber wie prüft man, ob ein Event zu Ende ist?
L.G.
Oisse

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige