Hallo Rast!
Vielen, vielen Dank!
Du hast vollkommen Recht gehabt!
Wenn ich an der Stelle (nach Else vor End If) DoEvents einfüge, macht sich das im Hintergrung laufende Makro nicht bemerkbar. Und das ist sehr wichtig, da der PC mehrere Prozesse verkraften muss!
;-)
Nochmals danke,
exonix
Rasta schrieb am 17.04.2004 23:51:57:
Hallo Exnoix,
meiner Meinung nach blockiert der PC nicht innerhalb der Schleife, in der Du die 2 Minuten misst, sondern bei der Prüfung der "nullsekunde". Baue an dieser Stelle noch ein DoEvents ein, meiner Meinung sollte es dann besser laufen. Eine Alternative zur Goto-Programmierung werde ich Dir nachliefern.
A: secnow = Second(Now)
If secnow = 0 Then
'Dateiexistenzprüfung
If LCase(Dir("c:\Zenker\Testfile.csv")) = "testfile.csv" Then
GoTo B:
Else
'Pause von 2 Sekunden
Pausenlänge = 2
Start = Timer
Do While Timer < Start + Pausenlänge
DoEvents
Loop
Ende = Timer
Gesamtdauer = Ende - Start
GoTo A:
End If
Else
DOEVENTS
GoTo A:
End If
Viele Grüße
Rasta
Hallo Rasta und alle anderen, die sich beteiligen!
Erst einmal ein großes Dankeschön für die prompte Antwort!
Möchte dir das Problem noch etwas genauer schildern.
DoEvents hatte ich schon in einer Pause mit DoWhile verarbeitet, dort entsteht auch nicht das Problem, meiner Meinung nach. Andere Makros, in denen ich ebenfalls Pausen eingebaut habe, blockieren nichts.
Hier erst mal der Quellcode:
A: secnow = Second(Now)
If secnow = 0 Then
'Dateiexistenzprüfung
If LCase(Dir("c:\Zenker\Testfile.csv")) = "testfile.csv" Then
GoTo B:
Else
'Pause von 2 Sekunden
Pausenlänge = 2
Start = Timer
Do While Timer < Start + Pausenlänge
DoEvents
Loop
Ende = Timer
Gesamtdauer = Ende - Start
GoTo A:
End If
Else
GoTo A:
End If
Wieso tritt die Blockade auf, wenn das Makro einmal pro Minute die Existenz einer Datei prüfen soll?
Es wird den PC doch nicht so sehr belasten, nebenher auf die Sekunden aufzupassen und bei 00 einen Schritt weiter zu gehen!
Hast du mir jetzt noch einen Rat?
"Unübersichtlich" bekomme ich durch Anmerkungen und Tabs in den Griff, aber was meinst du mit unsauber?
Alternative zu GoTo?
Danke,
exonix
Rasta schrieb am 16.04.2004 15:47:27:
Hallo Exonix,
baue ein
DoEvents
innerhalb der Schleife ein.
Gruß
Rasta
Ps: "Goto"-Anweisungen machen den Code unübersichtlich und unsauber
exonix schrieb am 16.04.2004 15:09:35:
Hallo alles zusammen!
Wer kann/wer möcht mir helfen?
Habe ein Makro in VBA geschrieben.
Im ersten Teil prüft das Makro jede Minute, ob eine ganz bestimmt Datei vorhanden ist, um dann zum nächsten Schritt zu gehen.
Realisiert habe ich das durch a: If Secnow = 0 then bla, bla, bla, else GoTo a: bla bla bla.
Allerdings ist der komplette PC blockiert, so lange es nicht Sekunde 0 geschlagen hat!
Hat jemand einen Tip, um das ganze zu entblockieren?
Danke,
exonix |