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

Forumthread: Makro beenden per Button

Makro beenden per Button
11.09.2017 14:55:58
Jens
Hallo,
ich ahbe auf einer userform zwei Button. Mit dem einen führe ich lange Berechnung aus. Er startet das Marko Berechnung
Der zweite Button soll das Makro abbrechen. Aber wie mache ich das? Mit exit sub. Aber der Button code ist ja nicht Teil des Makros?
Wie schaffe ich also den Bezug zu dem Makro, dass dies beendet werden soll?
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro beenden per Button
11.09.2017 15:25:34
JoNNy
Versuchs mal mit End
AW: Makro beenden per Button
11.09.2017 15:29:59
Jens
Wie soll ich aber dann den bezug auf das Makro im modul schaffen? wenn ich das Makro mit einem anderen Button ausgeführt habe als mit dem ich es Beenden will? Waas hilft mir da end?
Wie soll ich da den Bezug schaffen?
AW: Makro beenden per Button
11.09.2017 15:52:23
Rudi
Hallo,
das geht nicht, da VBA nicht Multitasking fähig ist.
Gruß
Rudi
Anzeige
AW: Makro beenden per Button
11.09.2017 15:57:20
JoNNy
Eine beherztes Drücken auf die ESC Taste tut's auch :D
AW: Makro beenden per Button
11.09.2017 16:29:49
Daniel
Hi
das ganze funktioniert nur dann, wenn du eine längerlaufende Schleife mit vielen umläufen hast.
dann kannst du im Schleifenumlauf mit DoEvents Excel dazu anweisen mal zu schauen, ob zwischenzeitlich was passiert ist (dh ob der Anwender irgendwelche Buttons oder Tasten gedrückt hat) und dann die entsprechend reagieren).
dh du müsstest so vorgehen:
1. erstelle eine Projektweit gültige Variable Abbrechen (Deklaration in einem allgemeinen Modul oberhalb der Markos)
Dim Abbrechen as Boolean
2. im Click-Event des Abbrechen-Buttons setzt du diese Variable auf True
Abbrechen = True
3. in der Berechnungschleife führst du an passender Stelle das DoEvents aus und überprüfst dann diese Variable:
For ....
DoEvents
If Abbrechen = True then
Abbrechen = False
Exit Sub (oder Exit For oder End, je nach Anforderung)
End If
Next
das Rücksetzen der Variable Abbrechen ist erforderlich, damit der nächste Lauf nach dem Abbruch wieder normal laufen kann (Excel merkt sich sonst den Wert von Abbruch, außer bei END)
Gruß Daniel
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Makro beenden per Button in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Projektweite Variable erstellen: Deklariere eine Projektweite Variable, die den Abbruchstatus speichert. Füge dies in ein allgemeines Modul ein:

    Dim Abbrechen As Boolean
  2. Button zur Abbruchfunktion erstellen: Erstelle einen Button, der den Abbruch auslöst. Im Click-Event des Buttons setzt du die Variable auf True:

    Private Sub AbbrechenButton_Click()
       Abbrechen = True
    End Sub
  3. Berechnungsschleife anpassen: In der Schleife, die du abbrechen möchtest, fügst du das DoEvents ein, um Excel zu ermöglichen, auf Benutzereingaben zu reagieren:

    For i = 1 To 100000
       DoEvents
       If Abbrechen Then
           Abbrechen = False
           Exit For 'oder Exit Sub, je nach Anforderung
       End If
       ' Deine Berechnung hier
    Next i
  4. Abbrechen der Ausführung: Wenn der Benutzer auf den Abbrechen-Button klickt, wird die Schleife unterbrochen und die Berechnung gestoppt.


Häufige Fehler und Lösungen

  • Fehler: Das Makro reagiert nicht auf den Abbrechen-Button.

    • Lösung: Stelle sicher, dass DoEvents innerhalb der Schleife aufgerufen wird. Ohne DoEvents wird Excel nicht auf Benutzereingaben reagieren.
  • Fehler: Das Makro wird nicht korrekt beendet.

    • Lösung: Überprüfe, ob die Variable Abbrechen korrekt gesetzt wird und ob der Abbruch an der richtigen Stelle in der Schleife erfolgt.

Alternative Methoden

  • ESC-Taste verwenden: Eine einfache Möglichkeit, um ein vba makro abbrechen zu können, besteht darin, die ESC-Taste während der Ausführung zu drücken. Dies funktioniert jedoch nur bei langen Laufzeiten.

  • VBA-Makro mit Tastenkombination beenden: Du kannst auch eine vba abbrechen tastenkombination definieren, indem du die Application.OnKey Methode verwendest, um eine spezifische Taste für das Beenden des Makros zuzuweisen.


Praktische Beispiele

Beispiel 1: Berechnung unterbrechen

Dim Abbrechen As Boolean

Private Sub BerechnungButton_Click()
    Abbrechen = False
    For i = 1 To 100000
        DoEvents
        If Abbrechen Then Exit For
        ' Lange Berechnung hier
    Next i
End Sub

Private Sub AbbrechenButton_Click()
    Abbrechen = True
End Sub

Beispiel 2: Nutzung der ESC-Taste Füge in deiner Schleife eine Abfrage für die ESC-Taste ein:

If GetAsyncKeyState(vbKeyEscape) <> 0 Then
    Exit Sub
End If

Tipps für Profis

  • Variablen verwalten: Achte darauf, dass du die Variable Abbrechen nach dem Beenden des Makros zurücksetzt, damit beim nächsten Lauf alles reibungslos funktioniert.

  • Benutzerfreundlichkeit: Informiere den Benutzer über den Abbruchstatus mit einer Statusanzeige oder einer Nachricht, die angezeigt wird, wenn das Makro erfolgreich beendet wurde.


FAQ: Häufige Fragen

1. Wie kann ich ein laufendes Makro ohne Button abbrechen? Du kannst die ESC-Taste verwenden, um ein laufendes Makro in Excel VBA zu beenden.

2. Was mache ich, wenn mein Makro nicht reagiert? Überprüfe, ob DoEvents in deiner Schleife eingebaut ist, um sicherzustellen, dass Excel auf Benutzeraktionen reagieren kann.

3. Ist es möglich, ein Makro mit einer Tastenkombination zu beenden? Ja, du kannst die Application.OnKey Methode verwenden, um eine spezielle Tastenkombination für das Beenden deines Makros festzulegen.

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