Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Marko stoppen mit Esc-Taste

Forumthread: Marko stoppen mit Esc-Taste

Marko stoppen mit Esc-Taste
k
hallo,
ich habe in einer Datei ein Marko für eine Userform, in der eine Webbrowserabfrage stattfindet (Entfernungsmessung per Google.Maps).
Hier und da kommt es vor, dass die Verbindung ziemlich langsam ist (UMTS/GPS-Signal, Stick).
Wie kann ich ein Marko per "Escape" Taste unterbrechen, bzw. beenden ?
Gibt es da einen Befehl für ? Habe bisher noch nichts online, Archiv passendes gefunden ?!
Gruß und Danke!
Kay
Anzeige
AW: Marko stoppen mit Esc-Taste
24.08.2009 18:59:47
MichaV
Hallo,
z.B. so:

Option Explicit
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Sub CommandButton1_Click()
Do
TextBox1.Text = Now()
DoEvents
If GetAsyncKeyState(27)  0 Then Exit Do 'ausbrechen wenn ESC gedrückt
Loop Until False 'Endlosschleife
MsgBox "raus"
End Sub
Gruss- Micha
Anzeige
Ich würde ihm einfach ein Bein stellen... ;-) orT
24.08.2009 22:59:27
Luc:-?
Gruß Luc :-?
AW: Ich würde ihm einfach ein Bein stellen... ;-) orT
27.08.2009 13:10:59
k
Hallo Micha,
...vielen Dank für Deinen COde - hat super funktioniert und ja, habe ihn bei meiner Berechnung der Route eingbaut und wenn man da jetzt irgendwann "Esc" drückt, wird auch die Berrechnung abgebrochen.
Sorry, kam leider noch nicht vorher dazu es zu probieren - musste dienstlich raus zum Außendienst und kam nur Nachts hier und da dazu was weiter zu probieren... aber nicht an diese Stelle.
Gruß
Kay
Anzeige
Danke für die Rückmeldung.
27.08.2009 13:18:09
MichaV
..was lange währt...
AW: Marko stoppen mit Esc-Taste
25.08.2009 12:03:12
fcs
Hallo Kay,
die ESC-Taste ist normalerweise die Taste mit der man die Makro-Ausführung unterbrechen kann.
Wenn aber einmal eine Anweisung gestartet ist, deren Ausführung lange dauert, dann ist eine Unterbrechung nicht mehr möglich. Dann heist es: Abwarten und Tee trinken.
Gruß
Franz
Anzeige
Auch nicht während der Abarbeitung von...
25.08.2009 18:54:28
Luc:-?
...Evaluate-Operationen, Franz... ;
Gruß Luc :-?
PS: Du hast meinen "Betreff"-Wink wohl auch nicht verstanden...? ;-)
@Luc-Marko läuft noch immer:-) owT
25.08.2009 19:16:32
robert
Ja, ja, u.immer wieder neu...! ;-) Gruß orT
25.08.2009 21:24:09
Luc:-?
Das reinste Stehaufmännchen...
:-?
Anzeige
;
Anzeige

Infobox / Tutorial

Makros mit der Escape-Taste in Excel unterbrechen


Schritt-für-Schritt-Anleitung

Um ein Makro in Excel mit der Escape-Taste zu unterbrechen, kannst Du den folgenden VBA-Code verwenden. Dieser Code prüft kontinuierlich, ob die Esc-Taste gedrückt wird, und bricht das Makro entsprechend ab:

Option Explicit
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

Private Sub CommandButton1_Click()
    Do
        TextBox1.Text = Now()
        DoEvents
        If GetAsyncKeyState(27) <> 0 Then Exit Do ' Beenden bei ESC
    Loop Until False ' Endlosschleife
    MsgBox "Makro abgebrochen"
End Sub

Platziere diesen Code in das Modul Deiner Userform. Wenn Du nun die Schaltfläche betätigst, wird die Zeit im Textfeld angezeigt und das Makro kann durch Drücken der Esc-Taste abgebrochen werden.


Häufige Fehler und Lösungen

  • Esc-Taste funktioniert nicht: Wenn die Esc-Taste nicht reagiert, könnte es sein, dass eine andere Anweisung in Ausführung ist, die das Abbrechen verhindert. In diesem Fall bleibt nur abzuwarten, bis die aktuelle Anweisung abgeschlossen ist.

  • Befehle reagieren nicht auf Esc: Stelle sicher, dass der Code die DoEvents-Anweisung enthält. Diese ermöglicht es Excel, auf Benutzeraktionen zu reagieren.


Alternative Methoden

Eine alternative Methode, um ein Makro zu stoppen, ist die Verwendung einer Benutzeroberfläche, die einen Abbrechen-Button bietet. Du kannst eine Schaltfläche hinzufügen, die beim Klicken das Makro beendet. Hier ist ein einfaches Beispiel:

Private Sub btnAbbrechen_Click()
    End ' Beendet das Makro
End Sub

Zusätzlich kannst Du auch die Application.EnableCancelKey-Eigenschaft nutzen, um das Abbrechen von Makros zu steuern, jedoch ist diese Methode nicht so flexibel wie die direkte Abfrage der Esc-Taste.


Praktische Beispiele

Hier ein Beispiel für ein einfaches Makro, das eine Schleife ausführt und auf die Esc-Taste reagiert:

Sub BeispielMakro()
    Dim i As Long
    For i = 1 To 100000
        Debug.Print i
        DoEvents
        If GetAsyncKeyState(27) <> 0 Then
            MsgBox "Makro abgebrochen"
            Exit Sub
        End If
    Next i
End Sub

Dieses Makro zählt bis 100.000 und gibt die Zahlen im Direktbereich aus, während es darauf wartet, dass die Esc-Taste gedrückt wird.


Tipps für Profis

  • Benutze DoEvents: Diese Anweisung ist entscheidend, um sicherzustellen, dass Excel auf Benutzeraktionen reagiert, während Dein Makro läuft.

  • Testen in verschiedenen Excel-Versionen: Stelle sicher, dass Dein Code in der von Dir verwendeten Excel-Version funktioniert, da es Unterschiede in der VBA Unterstützung geben kann.

  • Vermeide lange Schleifen ohne Pause: Wenn Du lange Schleifen verwendest, baue regelmäßig DoEvents ein, um die Benutzeroberfläche reaktionsfähig zu halten.


FAQ: Häufige Fragen

1. Wo ist die Esc-Taste? Die Esc-Taste befindet sich in der oberen linken Ecke der Tastatur und wird oft als "Escape"-Taste bezeichnet.

2. Warum funktioniert die Esc-Taste nicht in meinem Makro? Wenn das Makro lange dauert oder sich in einer Endlosschleife befindet, wird die Esc-Taste möglicherweise nicht erkannt. Stelle sicher, dass Du DoEvents verwendest, um die Reaktionsfähigkeit zu gewährleisten.

3. Kann ich die Esc-Taste für andere Funktionen verwenden? Ja, Du kannst die Esc-Taste für verschiedene Funktionen in VBA programmieren, solange Du den entsprechenden Code schreibst, um diese Funktionalität zu unterstützen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige