Thema Datum  Von Nutzer Rating
Antwort
16.04.2004 15:09:35 exonix
NotSolved
16.04.2004 15:47:27 Rasta
NotSolved
16.04.2004 16:15:15 Exonix
NotSolved
17.04.2004 23:51:57 Rasta
NotSolved
Rot Makro blockiert PC
19.04.2004 12:11:43 exonix
NotSolved
21.04.2004 11:35:08 Rasta
NotSolved

Ansicht des Beitrags:
Von:
exonix
Datum:
19.04.2004 12:11:43
Views:
1201
Rating: Antwort:
  Ja
Thema:
Makro blockiert PC
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

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
16.04.2004 15:09:35 exonix
NotSolved
16.04.2004 15:47:27 Rasta
NotSolved
16.04.2004 16:15:15 Exonix
NotSolved
17.04.2004 23:51:57 Rasta
NotSolved
Rot Makro blockiert PC
19.04.2004 12:11:43 exonix
NotSolved
21.04.2004 11:35:08 Rasta
NotSolved