Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
188to192
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
188to192
188to192
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Excel VBA - Loop/Until

Excel VBA - Loop/Until
03.12.2002 15:14:38
RH
Hallo,

wer kann helfen ???

Ich suche nach einer Möglichkeit, eine laufende Schleife (Loop - Until ), mit einem Click auf eine Schaltfläche eines Tabellenblatts zu beenden.

mfg

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Excel VBA - Loop/Until
03.12.2002 15:32:48
Nepumuk
Hallo Rainer,
so geht's:

Dim Halt As Boolean
Public Sub Schleife()
    Do
' mach irgendwas
    DoEvents
    If Halt Then Exit Do
    Loop
End Sub
Public Sub anhalten()
    Halt = True
End Sub
     Code eingefügt mit Syntaxhighlighter 1.14

Gruß
Nepumuk

Anzeige
Re: Excel VBA - Loop/Until
03.12.2002 15:36:55
Michael Scheffler
Hallo Nepumuk,

ich will ja nicht unhöflich sein, aber was soll das?

Wann wird Anhalten aufgerufen?

Gruß

Micha

Re: Excel VBA - Loop/Until
03.12.2002 16:23:04
Nepumuk
Hallo Micha,
wenn Rainer auf seinen Button klickt. So wollte er es, so bekam er es.
Gruß
Nepumuk
Allerdings...
03.12.2002 22:24:31
Björn
Huhu RH, huhu Nepumuk,

das funktioniert... - aber nicht besonders zuverläsig. Das ist meine Erfahrung aus ähnlichen Versuchen zum selben Problem vor gar nicht allzu langer Zeit. Zumindest würde ich eine kleine Pause am Ende eines jeden Pausendurchlaufes programmieren. Grds werden Tastatureingaben wohl zuverlässiger verarbeitert als Mausklicks. Warum weiß ich auch nicht. Ich hab letztlich bei meinen schleifen ein Hinweisfenster gesetzt: STRG + Pause = Abbruch. Das ist nicht so schick wie eine Schaltfläche - funktioniert aber sehr zuverlässig. Mit entsprechendem Errorhandler kann man das auch gut auffangen.

Gruß

Björn

Anzeige
Re: Allerdings...
03.12.2002 22:29:38
Nepumuk
Hallo Björn,
da hilft nur ein, mehrere DoEvents einzusetzen, dann erwischt du bestimmt einen.
Gruß
Nepumuk
Re: Allerdings...
03.12.2002 22:36:17
Björn
Huhu Nepumuk,

das hatte ich versucht...aber es hat nichts gebracht. Übrigens sind die DoEvents auch gar nicht so ungefährlich. An bestimmten Stellen scheinen sie Lufzeitfehler auszulösen oder sogar Abstürze von xl. Ich denke, die stabilere Sache ist schon der Tastenmakro - wenn auch längst nicht so elegant.

Viele Grüße

Björn

Re: Allerdings...
04.12.2002 07:10:18
RH
Hallo,

erst mal Danke für die Antworten!

Das Beispiel von Nepumuk funktioniert tatsächlich!!!

Da Du (Björn) aber meinst, es sei nicht zuverlässig, wie sollte ich denn über einen Tastendruck die Schleife beenden ??? ohne gleich das laufende Programm zu unterbrechen sondern ein geregelten PRG-Abschluss hinzubekommen.
Wie soll das mit dem Errorhandler Funktionieren ???

Tschau

Anzeige
Re: Allerdings...
04.12.2002 23:37:06
Björn
Huhu RH,

wenn Nepumuks Ansatz in Deinem Projekt tadellos klappt, spricht sicher nix gegen den Einsatz. In meinem Proggi hatte der Ansatz leider nicht richtig zuverlässig geklappt. es hing davon ab, wann man auf die Schaltfläche klickte. wenn man den falschen Zeitpunkt erwischte, wurde der Klick einfach vollständig ignoriert. Die Tastenfunktion ist STRG + Pause. Weil das eine shr unschöne Fehlmeldung erzeugt errorhandler einbauen. in etwa so:
Sub soundso()
On Error GoTo EH
Application.EnableCancelKey = xlErrorHandler
(...)

EH:
Exit Sub
If Err.Number <> 0 Then
If Err.Number = 18 Then
Application.EnableCancelKey = xlDisabled
MsgBox "Druckauftrag wurde vom Benutzer abgebrochen!", vbCritical, "Achtung!"
DoEvents
Else
Application.EnableCancelKey = xlDisabled
MsgBox "Laufzeitfehler " & Err.Number & " aufgetreten.", vbCritical, "Laufzeitfehler"
Rahmen1.Caption = Format(0, "0%")
ProgressBar.Value = 0
End If
End if
End sub

Gruß Björn

Anzeige
Re: Allerdings...
04.12.2002 23:37:15
Björn
Huhu RH,

wenn Nepumuks Ansatz in Deinem Projekt tadellos klappt, spricht sicher nix gegen den Einsatz. In meinem Proggi hatte der Ansatz leider nicht richtig zuverlässig geklappt. es hing davon ab, wann man auf die Schaltfläche klickte. wenn man den falschen Zeitpunkt erwischte, wurde der Klick einfach vollständig ignoriert. Die Tastenfunktion ist STRG + Pause. Weil das eine shr unschöne Fehlmeldung erzeugt errorhandler einbauen. in etwa so:
Sub soundso()
On Error GoTo EH
Application.EnableCancelKey = xlErrorHandler
(...)

EH:
Exit Sub
If Err.Number <> 0 Then
If Err.Number = 18 Then
Application.EnableCancelKey = xlDisabled
MsgBox "Druckauftrag wurde vom Benutzer abgebrochen!", vbCritical, "Achtung!"
DoEvents
Else
Application.EnableCancelKey = xlDisabled
MsgBox "Laufzeitfehler " & Err.Number & " aufgetreten.", vbCritical, "Laufzeitfehler"
Rahmen1.Caption = Format(0, "0%")
ProgressBar.Value = 0
End If
End if
End sub

Gruß Björn

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige