Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1656to1660
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

Application.Wait Methode ungenau???

Application.Wait Methode ungenau?
14.11.2018 07:56:41
Torsten
Hallo zusammen,
habe ein kleines Problemchen oder eine Frage zur Application.Wait Methode.
Foldenden Code verwende ich, um den Code fuer 1 Minute 30 Sekunden zu unterbrechen, da ich auf ein anderes Programm warten muss, wo ein Ladevorgang fuer eine Liste stattfindet.
newHour = Hour(Now())
newMinute = Minute(Now()) + 1
newSecond = Second(Now()) + 30
waitTime = TimeSerial(newHour, newMinute, newSecond)
Application.Wait waitTime
Jetzt hatte ich immer das Problem, dass ich einen Debug Error hatte, da die Liste nicht fertig geladen war und der Code nicht weitermachen konnte.
Habe dann mal die Zeit gestoppt mit Stoppuhr und festgestellt, dass der Code nicht fuer 1 Minute 30 Sekunden, sondern nur fuer 1 Minute 15 Sekunden gestoppt wird.
Woran liegt das? Ist diese Methode so ungenau?
Vielen Dank fuer eure Meinungen und Vorschlaege.
Gruss Torsten

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Anderes Programm?
14.11.2018 08:25:14
RPP63
Moin!
Wenn das "andere Programm" Excel ist, dann dürfte die Übersetzung von Application die "Lösung" sein:
.Wait schickt Excel in den Tiefschlaf, da wird nix anderes geladen.
Gruß Ralf
AW: Anderes Programm?
14.11.2018 08:32:08
Torsten
Nein, ich sage ja. Anderes Programm, hier ist es SAP.
AW: Application.Wait Methode ungenau?
14.11.2018 08:35:34
EtoPHG
Hallo Torsten,
Dass die Methode 'ungenau' ist, dokumentiert MS allein schon im Zitat: ... pauses a running macro for approximately 10 seconds.. Dass sie aber so ungenau ist und v.a. früher als angegeben weiterläuft, kann ich mir nicht vorstellen. Darum stellt sich die Frage, ob das nicht ein Messfehler ist.
Generell halte ich es immer für unsicher Codes auf absolute Zeitangaben programmieren, die von externen Informationen abhängig sind. Vielmehr würde ich in deinem Fall den (Debug) Fehler abfangen und ggf. auf eine Benutzerantwort auf die Möglichkeite [Weiter warten] [Abbrechen] reagieren.
Gruess Hansueli
Anzeige
AW: Application.Wait Methode ungenau?
14.11.2018 08:44:34
Torsten
Hallo Hansueli,
danke fuer deine Antwort. Ein Messfehler ist es nicht, habe es mehrfach gestestet und auch die Zeit mal veraendert. Anstatt 1 Minute 30 dann auf 1 Minute 45 erhoeht. Dann bekam ich die gewuenschten 1:30.
Eine Benutzerabfrage kann ich leider hier nicht machen, da ich mit SenKeys Methode das SAP fernsteuere. Ist eine Art Automatisierung fuer einen SAP Report, der dann per Copy-Paste in Excel uebertragen wird, nachdem die Liste in SAP geladen ist. Leider ist das Laden der Liste in SAP immer unterschiedlich, je nachdem, wie viele Daten dort drin sind. Ich habe das Zeitfenster so eingeschraenkt, da mehrere Reporte gemacht werden muessen. Das kann dann endlos werden, wenn ich das noch mehr erweitere.
Gruss Torsten
Anzeige
AW: Application.Wait Methode ungenau?
14.11.2018 09:31:13
EtoPHG
Hallo Torsten,
Sorry, dann kann ich nicht weiterhelfen.
Ich habe mal 100 Zufallsmessungen zwischen Wartezeiten von 1-120 Sekunden.
Die Abweichung zwischen gemessener Wartezeit (Timer-Methode) und beauftragter Wartezeit (Wait-Methode) betrug max. 3 Hunderstelsekunden und im Mittel 3 Millisekunden zu wenig gewartet!
Gruess Hansueli
AW: Application.Wait Methode ungenau?
14.11.2018 10:09:54
Daniel
Hi
kennst du eine Methode um zu prüfen, ob die Liste fertig geladen ist?
(z.B. die Aktion, die zum Fehler führt, gezielt im On Error Resume Next-Modus ausführen und prüfen ob ein Fehler aufgetreten ist)
wenn ja, könntest du so vorgehen:
- prüfe, ob die Liste fertig geladen ist
wenn ja: führe den den Code zum Bearbeiten aus
wenn nein: starte über Application.Ontime das Makro erneut mit einer Zeitverzögerung (z.b. 10 sec)
als code
Sub MakroXXX()
IF Prüfen_ob_liste_fertig_geladen THEN
hier der Code zum Bearbeiten
ELSE
Application.Ontime Now + Timeserial(0, 0, 10), "MakroXXX"
END IF
END SUB
hat zwei Vorteile:
1. du schickst Excel nicht in den Tiefschlaf
2. du brauchst keine feste Wartezeit mehr. Dh wenn die Liste schneller geladen wird, erfolgt die Abarbeitung auch schneller, und wenn es länger dauert als erwartet, bekommst du keinen Fehler.
Gruß Daniel
Anzeige
AW: Application.Wait Methode ungenau?
14.11.2018 10:16:23
Torsten
Hi Daniel,
gute Idee. Leider bin ich nicht so bewandert in SAP. Keine Ahnung, ob es da eine Moeglichkeit gibt, zu pruefen, ob die Liste fertig geladen ist. Muesste ich mal mit einem SAP Experten checken. Aber dann ist da noch das Problem, das an Excel zurueckzugeben. Soweit ich weiss, arbeiten Excel und SAP nicht zusammen. Man kann zwar von SAP aus eine Excel Tabelle generieren, aber der Weg war mir zu umstaendlich und zu lang. Aber ich muss wohl oder uebel wieder darauf zurueckkommen, wie es aussieht.
Danke trotzdem.
Gruss Torsten
AW: Application.Wait Methode ungenau?
14.11.2018 10:41:00
Daniel
HI
naja, du sagtes ja, wenn du dein Makro laufen lässt und die Liste nicht fertig geladen ist, läuft der Code auf einen Fehler.
jetzt könnte sich man anschauen, welche Aktion es war, die den Fehler ausgelöst hat und darauf basierend eine Prüfmethode erstellen.
Gruß Daniel
Anzeige
AW: Application.Wait Methode ungenau?
14.11.2018 11:32:27
Torsten
Hi Daniel,
ok jetzt hab ich verstanden. Den Fehler bekomme ich bei der Paste Anweisung, da vorher nicht kopiert werden konnte, weil die Liste nicht geladen ist. Somit ist die Zwischenablage leer und der Fehler kommt.
Also koennte ich dort die Fehlerbehandlung einbauen und das Makro wieder ab dem Copy Befehl starten. Wenn dann die Liste fertig ist, laeuft der Code weiter. Wenn nicht, kommt die Fehlerbehandlung nochmal.
Danke dir vielmals
AW: Application.Wait Methode ungenau?
14.11.2018 11:46:28
Daniel
Kannst du noch an irgend etwas anderes erkennen, ob die Liste geladen ist?
muss eine Exceldatei mit einem bestimmten Namen geöffnet sein oder eine bestimmte Datei in einem Verzeichnis vorliegen?
das wären dann vielleicht sinnvollere Prüfungen.
Man sollte auch wissen, ob die Liste vorliegt, bevor man irgendwelche Bearbeitungsaktionen startet.
Gruß Daniel
Anzeige
AW: Application.Wait Methode ungenau?
14.11.2018 11:53:41
Torsten
Nein leider bekomme ich von SAP keine Rueckmeldung, ob die Liste geladen ist oder nicht. Nur diese Rueckmeldung wuerde mir hier weiterhelfen.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige