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

Forumthread: Bei "ESC" Makro sicher beenden

Bei "ESC" Makro sicher beenden
29.11.2005 12:38:40
Flyingsunbird
Hallo zusammen
Da mein Makro u.U. sehr lange benötigt, möchte ich dass der Benutzer
mittels drücken von "Esc" das Makro beenden kann, ohne dabei
im Code zu landen.
Wie lautet der entsprechende Befehl, und muss ich den
in jedem Modul neu eingeben, oder gar in jeder Prozedur?
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bei "ESC" Makro sicher beenden
29.11.2005 12:45:22
Heiko
Hallo,
mal schnell aus einer meiner Animationen rauskopiert, das siehst du wie es geht.

Private Sub CommandButton1_Click()
Dim X
X = 0
' Das abbrechen einer Schleife über dir ESC Taste für zu einem Fehler und einer EXCEL
' Meldung, um die zu unterdrücken springt das Sub zur Marke ErrorHandler und beendet
' das Sub ohne Fehlermeldung.
On Error GoTo Errorhandler
Application.EnableCancelKey = xlErrorHandler
' Schleife für die Animation
Marke2:
' Zelle G15 aktivieren da sonst EXCEL die Grafiken nicht aktualisiert.
Range("G15").Select
' Werte für die x-Achsen Animation hochzählen.
Worksheets("Grafik").Range("B1").Value = X
X = X + 0.01744444444
' Unterbrechen dieser Schleife nur mit ESC Taste möglich.
GoTo Marke2:
Errorhandler:
End Sub

Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige
Danke..:)
29.11.2005 14:31:01
Flyingsunbird
Danke, schönen Tag noch
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Makro sicher mit "ESC" beenden in Excel


Schritt-für-Schritt-Anleitung

Um ein Makro in Excel sicher mit der "ESC" Taste zu beenden, folge diesen Schritten:

  1. Öffne den Visual Basic for Applications (VBA) Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge den Code in dein Makro ein:

    • Du kannst den folgenden Beispielcode verwenden, um das Abbrechen des Makros zu ermöglichen:
    Private Sub CommandButton1_Click()
       Dim X
       X = 0
       On Error GoTo Errorhandler
       Application.EnableCancelKey = xlErrorHandler
    
    Marke2:
       Range("G15").Select
       Worksheets("Grafik").Range("B1").Value = X
       X = X + 0.01744444444
       GoTo Marke2:
    
    Errorhandler:
    End Sub
  3. Speichere dein Projekt:

    • Vergiss nicht, die Datei als Makro-aktivierte Arbeitsmappe (*.xlsm) zu speichern.
  4. Starte das Makro:

    • Teste dein Makro, indem du auf den Button klickst. Drücke "ESC", um das Makro zu beenden.

Häufige Fehler und Lösungen

  • Fehler: Excel zeigt eine Fehlermeldung an, wenn "ESC" gedrückt wird:

    • Lösung: Stelle sicher, dass der Befehl On Error GoTo Errorhandler korrekt platziert ist, um Fehlermeldungen zu unterdrücken.
  • Das Makro reagiert nicht auf "ESC":

    • Lösung: Überprüfe, ob Application.EnableCancelKey auf xlErrorHandler gesetzt ist. Andernfalls wird das "ESC" Signal ignoriert.

Alternative Methoden

Wenn Du keine Schleifen hast oder eine einfachere Lösung benötigst, kannst Du auch den DoEvents Befehl verwenden. Dieser ermöglicht Excel, auf Benutzeraktionen zu reagieren, während das Makro läuft. Ein einfaches Beispiel wäre:

Do While X < 100
    DoEvents
    ' Weitere Codezeilen
Loop

Praktische Beispiele

Hier ist ein einfaches Beispiel, um ein Makro zu erstellen, das eine Anzahl von Iterationen durchführt, und dabei die "ESC" Taste verwendet, um es abzubrechen:

Sub TestMacro()
    Dim i As Integer
    Dim X As Long
    X = 0
    On Error GoTo Errorhandler
    Application.EnableCancelKey = xlErrorHandler

    For i = 1 To 1000
        Worksheets("Sheet1").Cells(i, 1).Value = X
        X = X + 1
        DoEvents  ' Dies ermöglicht das Abbrechen des Makros mit "ESC"
    Next i

Errorhandler:
End Sub

Tipps für Profis

  • Verwende DoEvents: Dies ist besonders nützlich, wenn Du ein langlaufendes Makro hast. Es erlaubt Excel, auf Tasteneingaben zu reagieren, während das Makro ausgeführt wird.

  • Kombiniere die Nutzung von ESC mit Statusanzeigen: Du kannst eine Statusanzeige in deinem Makro einfügen, die dem Benutzer anzeigt, wie lange der Vorgang noch dauern könnte.


FAQ: Häufige Fragen

1. Kann ich den "ESC" Befehl in allen Makros verwenden?
Ja, Du kannst den "ESC" Befehl in allen Makros verwenden, indem Du die oben beschriebenen Techniken anwendest.

2. Muss ich den Code in jedes Modul einfügen?
Nein, Du musst den Code nur in das spezifische Makro einfügen, das Du abbrechen möchtest. Es ist nicht erforderlich, ihn in jedem Modul oder jeder Prozedur zu wiederholen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige