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

Forumthread: Makro unterbrechen und fortsetzen

Makro unterbrechen und fortsetzen
25.12.2004 20:30:40
Marce
Hi zusmmen,
ich hab nochmal ein problem:
Ich will ein Makro, der ziemlich lange arbeitet eventuell unterbrechen. dann soll er fragen, ob man das wirklich will - wenn nicht fortsetzen.
Meine lösung bisher: unterbrechen mit Strg+Untbr (enableCancelKey)...
aber dann kann ich nicht fortsetzen (oder doch?)
ne lösung mit nem abbrechen -Button wäre mir noch lieber - aber da tut bei mir gar nichts, weil vb dummerweise keine threads unterstützt *g*
vielen dank für die hilfe (@Hajo: ein tipp reicht vielleicht auch schon - brauch nur ne anregung *g*)
Anzeige

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

Betreff
Datum
Anwender
Anzeige
F5 ?
ransi
hallo marce
ginge sendkeys {F5} ?
ransi
AW: F5 ?
Marce
nein
AW: F5 ?
25.12.2004 23:10:14
Josef
Hallo Marce!
Probier mal:
(Abbruch mit ESC)

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Const VK_ESCAPE = &H1B

Public Sub test()
Do
If GetAsyncKeyState(VK_ESCAPE) = -32767 Then _
If MsgBox("Wollen sie wirklich abbrechen?" & Space(10), _
vbYesNo + vbQuestion, "Abbruch") = vbYes Then Exit Sub
Loop
End Sub

Gruß Sepp
Anzeige
AW: F5 ?
Marce
Hi Sepp,
ich hab dein Code nicht ausprobiert, aber das was du da hast ist im prinzip ein KeyListener, oder?
Aber das bringt mir nichts, weil ich das ja nicht ständig abfragen kann....
Ich werd es aber trotzdem mal ausprobieren (nur nicht mehr heute)
AW: Makro unterbrechen und fortsetzen
25.12.2004 21:54:00
Matthias
Hallo Marce,
mein Vorschlag:
ein nichtmodales Userform (ShowModal = False), mit einem Button und folgendem Code:
Private Sub CommandButton1_Click() Abbruch = True End Sub (Abbruch ist eine globale Variable)
dann als Beispielcode:
Option Explicit
Public Abbruch As Boolean
Sub test()
Dim i As Long, ende As Long
ende = 100000
Abbruch = False
UserForm1.Show
For i = 1 To ende
DoEvents
If Abbruch Then
Abbruch = False
If MsgBox("Wirklich abbrechen?", vbQuestion + vbYesNo) = vbYes Then
Unload UserForm1
MsgBox "Abbruch bei " & i
Exit For
End If
End If
Next
Unload UserForm1
If i > ende Then
Unload UserForm1
MsgBox "Fertig!"
End If
End Sub
Vielleicht kannst du damit was anfangen?
Gruß Matthias
Anzeige
AW: Achso, Excel 97...
25.12.2004 22:06:05
Matthias
Hallo Marce,
sorry, die Version hab ich übersehen. Nichtmodal geht ja erst ab 2000.
Aber im Dialog mit Hajo weiter unten hast du ja schon eine Möglichkeit gefunden...
Übrigens gibt es bei Strg-Pause sehr wohl den Button "Fortstetzen", oder etwa auch nicht bei Excel 97?
Grüße,
Matthias
Anzeige
AW: Makro unterbrechen und fortsetzen
Marce
Hi Matthias,
danke, aber das bringt mich glaub auch nicht wirklich weiter, weil ich den Button nicht drücken kann, während der andere Makro läuft...
vb kann halt nichts gleichzeitig...
Das was funktioniert ist das abbrechen mit esc:
Application.enableCancelKey
On Error GoTo xy
......
xy:
blabla
aber wenn ich jetzt irgendwo esc drücke weiß ich nicht wo das war und kann nicht an die entsprechende stelle zurückspringen.
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Makro unterbrechen und fortsetzen


Schritt-für-Schritt-Anleitung

Um ein Excel-Makro zu unterbrechen und später fortzusetzen, kannst du die folgenden Schritte befolgen:

  1. Erstelle ein neues Modul in deinem VBA-Editor.

  2. Definiere eine globale Variable, um den Abbruchstatus zu speichern. Füge den folgenden Code hinzu:

    Public Abbruch As Boolean
  3. Erstelle ein UserForm mit einem Button, der das Makro abbrechen soll. Füge den folgenden Code in den Button ein:

    Private Sub CommandButton1_Click()
       Abbruch = True
    End Sub
  4. Implementiere die Hauptschleife in deinem Makro. Hier ein Beispiel, wie du die Abbruchbedingung nutzen kannst:

    Sub test()
       Dim i As Long, ende As Long
       ende = 100000
       Abbruch = False
       UserForm1.Show
       For i = 1 To ende
           DoEvents
           If Abbruch Then
               Abbruch = False
               If MsgBox("Wirklich abbrechen?", vbQuestion + vbYesNo) = vbYes Then
                   Unload UserForm1
                   MsgBox "Abbruch bei " & i
                   Exit For
               End If
           End If
       Next
       Unload UserForm1
       If i > ende Then
           MsgBox "Fertig!"
       End If
    End Sub
  5. Starte das Makro. Du kannst nun das Makro unterbrechen, indem du auf den Button im UserForm klickst.


Häufige Fehler und Lösungen

  • Problem: Das Makro lässt sich nicht unterbrechen.

    • Lösung: Stelle sicher, dass du DoEvents in deiner Schleife verwendest. Dadurch wird Excel in die Lage versetzt, auf Benutzerinteraktionen zu reagieren.
  • Problem: Der Abbruch funktioniert nicht in älteren Excel-Versionen.

    • Lösung: In Excel 97 kannst du die ESC-Taste verwenden, um das Makro abzubrechen. Verwende Application.EnableCancelKey = xlErrorHandler im Code.

Alternative Methoden

  1. VBA Code Anhalten: Anstelle eines Buttons kannst du die ESC-Taste verwenden, um das Makro zu unterbrechen. Dies erfordert die Aktivierung der EnableCancelKey.

    Application.EnableCancelKey = xlErrorHandler
  2. VBA Skript abbrechen: Nutze eine Tastenkombination wie Strg + Pause, um das Makro zu stoppen. Du kannst dann mit F5 fortsetzen.


Praktische Beispiele

Hier ist ein einfaches Beispiel für ein Makro, das eine Endlosschleife beinhaltet und unterbrochen werden kann:

Sub Endlosschleife()
    Do
        ' Deine Logik hier
        If SomeCondition Then Exit Do
        DoEvents
    Loop
End Sub

Wenn du Application.EnableCancelKey auf xlErrorHandler setzt, kannst du das Makro mit ESC abbrechen.


Tipps für Profis

  • Verwende UserForms, um eine bessere Benutzererfahrung zu gewährleisten. Dadurch kannst du dein Makro elegant unterbrechen und fortsetzen.
  • Füge Logging-Funktionen hinzu, um den Fortschritt deines Makros zu verfolgen. Das hilft dir zu wissen, an welcher Stelle du das Makro unterbrochen hast.
  • Teste deine Makros gründlich, insbesondere die Abbruch- und Fortsetzungslogik, um sicherzustellen, dass sie wie gewünscht funktionieren.

FAQ: Häufige Fragen

1. Wie kann ich ein Makro in Excel stoppen?
Du kannst ein Makro mit Strg + Pause stoppen oder eine benutzerdefinierte Abbruchslogik im Code implementieren.

2. Gibt es eine Tastenkombination, um ein VBA-Makro zu unterbrechen?
Ja, du kannst die ESC-Taste verwenden oder Strg + Pause für eine sofortige Unterbrechung.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige