[VBA] Endlosschleife stoppen

05/11/2011 - 21:17 von Christof Kluß | Report spam
Hallo,

ich möchte das die Ausführung einer Schleife stoppt, sobald der Benutzer
einen "Stop"-Button drückt.

Könnt ihr mir Stichworte dazu geben, wie ich das mit VBA hinbekomme?

Gruß
Christof
 

Lesen sie die antworten

#1 Ingo Moch
05/11/2011 - 23:16 | Warnen spam
Hallo Christof,

Christof Kluß wrote:

ich möchte das die Ausführung einer Schleife stoppt,
sobald der Benutzer einen "Stop"-Button drückt.



Wenn sich die Schleife im Form-Modul selbst befindet,
eine als Private deklarierte Variable vom Typ Boolean
auf Modulebene definieren, anderfalls muss eine
solche Vaiable mit Public deklariert werden.

Beim Klicken der Stop-Schaltflaeche setzt Du diese
Variable auf True. In der Schleife pruefst Du, ob die
Variable True ist und steigst bei einem positiven aus.

Zudem musst Du noch in der Schleife DoEvents()
verwenden, damit das Formobjekt ueberhaupt reagiert.
Aber Achtung ... Du musst dan dafuer sorgen, dass
Programmteile nicht doppelt ausgefuehrt werden, wenn
das "schaedliche" Auswirkungen hat.

<ungetesteter Demo-Code>
Private mbAbortLoop as Boolean

Private Sub cmdAbortLoop()
mbAbortLoop = True
End Sub

Private Sub TheLoopProcedure()
Dim bInProc As Boolean

If bInProc Then
Debug.Print _
"Prozedur kann nur einmal aufgerufen werden"
Exit Sub
End If
bInProc = True

Do
Debug.Print "Hier tue ich was"

If mbAbortLoop Then
mbAbortLoop = False
Exit Do
End If
Loop

bInProc = False
End Sub
</ungetesteter Demo-Code>

HTH
Ingo

Ähnliche fragen