Anzeige
Archiv - Navigation
1040to1044
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

esc Endlosschleife beenden

esc Endlosschleife beenden
22.01.2009 19:46:00
Michael
Hallo!
Benötige eine Schleife die die ganze Zeit im Hintergrund läuft. Bei ESC soll sie abgebrochen werden.
Mein Bescheidener Versuch!
Private Declare Function GetAsyncKeyState Lib "user32" _
(ByVal vKey As Long) As Integer
Sub Schleife()
Do
DoEvents
If (GetAsyncKeyState(&H1B)) 0 Then Exit Do
Application.OnTime Now + TimeValue("0:0:3"), "StartZeitGeber"
'StartZeitGeber
Loop Until 1 = 1
' normalerweise müsste hier " Loop Until 1 = 2" eine 2 stehen, damit es eine endlosschleife ist
End Sub



Public Sub StartZeitGeber()
Kontrolle
Application.OnTime Now + TimeValue("0:0:3"), "Schleife"
End Sub



Private Sub Kontrolle()
MsgBox Format(Now, "hh:nn:ss")
' dient zur kontrolle ob überhaut etwas passiert
Sheets("Tabelle1").Select
Selection.QueryTable.Refresh BackgroundQuery:=False
' DIE AKTUALISIERUNG VON TABELLE1 IST WICHTIG; DAS MUSS UNBEDINGT AUSGEFÜHRT WERDEN
End Sub


Es gibt sicherlich bessere Lösungen.(Ich glaub das hier ist keine)
Vielen Dank
Gruß Michael

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

Betreff
Datum
Anwender
Anzeige
AW: esc Endlosschleife beenden
23.01.2009 11:04:12
fcs
Hallo Michael,
die ESC-Taste solte man hier nicht nutzen, da sie in Excel eine allgemeine Funktion für das Abbrechen von Aktionen hat. Besser eine andere Tasten-Kombination, z.B. Strg+q
Die Prozeduren kannst du etwas anders aufbauen, so dass der Timer sich rekursiv immer wieder selber aufruft, bis er gestoppt wird.
Dem Makro StopZeitGeber ordnest du dann unter Extras--Makro--Makros...--Optionen die gewünschte Tastenkombination zu.
Gruß
Franz

'Code in einem Allgemeinen Modul
Option Explicit
Public TimeSchleife As Date
Public Sub StopZeitGeber()
'Tastenkombination StrG + q
On Error GoTo Fehler 'Falls OnTime nicht aktiv
Application.OnTime earliesttime:=TimeSchleife, Procedure:="Kontrolle", schedule:=False
MsgBox "Zeitgeber beendet"
Fehler:
End Sub
Public Sub StartZeitGeber()
Kontrolle
End Sub
Private Sub Kontrolle()
On Error GoTo Fehler
Application.StatusBar = "Tabellenaktualisierung  " & Format(Now, "hh:nn:ss")
Application.Wait Now + TimeValue("0:0:1")
' dient zur kontrolle ob überhaut etwas passiert
Sheets("Tabelle1").Select
Selection.QueryTable.Refresh BackgroundQuery:=False
' DIE AKTUALISIERUNG VON TABELLE1 IST WICHTIG; DAS MUSS UNBEDINGT AUSGEFÜHRT WERDEN
TimeSchleife = Now + TimeValue("0:0:3")
Application.OnTime TimeSchleife, "Kontrolle"
Application.StatusBar = False
Fehler:
With Err
If .Number  0 Then
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
Call StopZeitGeber
End If
End With
End Sub


Zusätzlich muss du unter DieseArbeitsmappe die folgende Prozedur einfügen, um ggf. beim Schließen der Datei den Timer automatisch zu beenden.


Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call StopZeitGeber
End Sub


Anzeige
AW: esc Endlosschleife beenden
23.01.2009 13:08:08
Michael
HI!
Sieht besser aus. Funktioniert nicht ganz!
Er schmeißt mir immer einen Fehler raus: " Mehrdeutiger Name "Kontrolle"
und NU?
Gruß Michael
AW: esc Endlosschleife beenden
23.01.2009 13:40:00
fcs
Hallo michael,
Entweder schwirrt irgendwo in der Datei/dem Modul zwei Prozeduren mit dem gleichen Namen oder Excel hat sich irgendwie mal beim Einfügen/Löschen von prozeduren "verschluckt".
Benenne die Prozedur "Kontrolle" um, zb. in "Kontrolle2".
Ebenso den Prozedurnamen in den beiden OnTime-Aufrufen.
Dann sollte es eigentlich klappen.
Gruß
Franz
AW: esc Endlosschleife beenden
23.01.2009 15:16:00
Michael
Jup das KNALLT!
Beides durchgeführt!
Danke!!!!!!!!!!!
Mein System hatte einen kleinen schluckauf. ;-) Passiert wohl bestimmt öfters, wenn man ein Program startet.
Anzeige
AW: esc Endlosschleife beenden
24.01.2009 10:09:00
Michael
Hi!
Habe das Program eingefügt. Leider muss ich erst einen Wert aus dem aktualisieenden Excel sheet löschen und kann danach mit Strg+q das Program beenden! Woran liegt das?
Gruß Michael
AW: esc Endlosschleife beenden
26.01.2009 09:46:02
fcs
Hallo Michael,
ich hatte ohne Datenaktualisierung aus einer externe Datenquelle getestet.
Da funktioniert das Abbrechen des Timers gut.
Möglicherweise gibt es eine "Interessenkonflikt" zwischen der automatischen Datenaktualisierung und dem Start des Stop-Makros per Tasten-Kombination. Leider weiß ich da nichts genaues.
Gruß
Franz
AW: esc Endlosschleife beenden
27.01.2009 16:43:44
ms_michael_2002@yahoo.de
Danke!
Hat alles geklappt!
Hatte die Daten in einem zweiten Arbeitsblatt eingetragen.
Gruß Michael
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige