Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
1628to1632
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
Userform vbmodeless
12.06.2018 15:35:36
Christof
Hallo Allerseits!
Ich habe ein Problem mit einer Arbeitsmappe in der ich eine Berechnung über drei Arbeitsblätter hinweg durchführen möchte. Die Berechnung funktioniert einwandfrei.
Ich möchte jetzt im nächsten Schritt bei Betätigen der Berechnung (mittels CommandButton) eine _ Userform öffnen lassen, die dem Nutzer mitteilt, dass die Rechnung läuft. Das funktioniert soweit auch. Die Berechnung läuft durch

UserForm.Show vbmodeless
einfach weiter durch.
Nun soll auf der Userform ein "Abbrechen"-Button sein, mit dessen Hilfe ich eine Berechnung abbrechen kann. Mein Gedanke dazu war dieser: Ich definiere eine Public Variable, die ich bei Klicken auf den "Abbrechen"-Button an die "Rechnen"-Funktion übergebe und mittels If-Bedingung (im Idealfall) einen Abbruch hervorrufe.

Public Abbruch As Integer
Sub Abbrechen_Click()
Abbruch = 1
End Sub
Sub Rechnen_Klicken()
Abbruch = 0
UserForm.Show vbmodeless
DoEvents
If Abbruch = 0 Then
'Führe Berechnung durch
Else
Exit Sub
End if
End Sub

Leider Funktioniert das so nicht. Die UserForm erscheint, der "Abbrechen"-Button lässt sich dann aber nicht betätigen. Die Berechnung läuft also bis zum Schluss durch.
Woran kann das liegen?
Vielen Dank für Eure Hilfe!
PS: Ich habe hier eine Beispiel-Tabelle angefügt:
https://www.herber.de/bbs/user/122062.xlsm

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Userform vbmodeless
12.06.2018 16:28:05
PeterK
Hallo
Ein Makro aufzurufen während ein Makro läuft funktioniert leider nicht. Mit einem Optionsfeld jedoch geht es.

Private Sub OptionButton1_Click()
Abbruch = 1
End Sub
Wird in die Userform eingefügt. Ein zweiter Fehler: "Abbruch" ist auch lokal in "Rechnen_Klicken" definiert (Bitte löschen). Und nun musst du noch auf Events innerhalb deiner Schleife reagieren "DoEvents()".
AW: Userform vbmodeless
13.06.2018 08:07:21
Christof
Hallo Peter,
Danke für deine Antwort. Habe ich über einen CommandButton also keine Möglichkeit mein Makro abzubrechen?
Ein OptionButton wäre hier leider unschön.
Wie gehe ich, wenn ich Abbruch nicht vorher einmal als Abbruch = 0 deklariere mit der If-Schleife um? Meine Idee war, dass ich Abbruch = 0 setze und die Schleife so lange läuft, bis ich per ButtonKlick den Value von Abbruch auf 1 setze. Oder beißt sich das dann?
Ich habe ja in meiner Rechnen_Klicken() ein DoEvents. Benutze ich das da falsch?
Sorry, bin leider ambitionierter Laie und nicht so bewandert in vba. :)
Anzeige
AW: Userform vbmodeless
13.06.2018 08:52:52
Christof
Also der Fehler scheint zu sein, dass die UserForm während der Prozedur einfriert. Wenn ich meinen Code umstelle, sodass sich die UserForm nach Ablauf der Berechnung nicht entläd, so kann ich nach der Berechnung die UserForm wieder verschieben und auch die Buttons betätigen.
Hat jemand einen Ansatz, woran das liegen kann?
AW: Userform vbmodeless
15.06.2018 14:58:32
mmat
Hallo,
vermutlich ist deine Berechnung so heftig, das alles andere in Excel einfriert. Wie im Beitrag von Peter K bereits erwähnt, muss in der Hauptschleife deiner Berechnung regelmäßig (besser zuviel als zuwenig) doevents aufgerufen werden. Das eine Mal da am Anfang ist unzureichend. Und der Eventhandler darf natürlich nicht durch Globalschalter deaktiviert sein.
Weiterhin muss die Variable "Abbruch" ebenfalls während der Berechnung regelmäßig geprüft werden.
Btw. Natürlich kann man ein Makro starten, während ein anderes läuft. Jedenfalls wenn man alles richtig macht ... :-)
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen