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

Prozedur mit Button beenden

Prozedur mit Button beenden
05.04.2006 19:02:40
Jürgen
Hallo Leute!
Ich habe ein Formular (usrKartenMischen) mit zwei Befehlsschaltflächen (cmdStart und cmdStop) erstellt.
Mit cmdStart wird die Prozedur "MischeKarten" aufgerufen, die zur Zeit eine Endlosschleife enthält. Diese Endlosschleife möchte ich mit einem Klick auf cmdStop abbrechen. Das gesamte Formular (also auch cmdStop) lässt sich jedoch mit Beginn der Endlosschleife nicht mehr ansprechen, so dass nur noch über die Esc-Taste die Ausführung des Codes unterbrochen werden kann. Die ShowModal-Eigenschaft des Formulars steht auf "false", da bei "true" auch die Esc-Taste nicht mehr hilft, sondern nur noch der Windows Taskmanager (Strg+Alt+Entf).
------------------------------------------
Dim Mischen As Boolean

Private Sub cmdStart_Click()
Me.cmdStop.SetFocus
Mischen = True
Call MischeKarten
End Sub


Private Sub cmdStop_Click()
Mischen = False
End Sub

Sub MischeKarten()
While Mischen = True
ActiveCell.Value = Second(Now) 'Endlosschleife
Wend
End Sub
--------------------------------------
Warum lässt sich das Formular nicht mehr anklicken?
Vielen Dank im Voraus.
Jürgen
Eins noch zu meiner Excel-Version:
Die Info über "?" gibt 'Excel 2002' an. Ich hoffe, das die von mir ausgewählte Excel-Version "10.0 - Office XP" hiermit übereinstimmt.

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
DoEvents
05.04.2006 19:20:38
{Boris}
Hi Jürgen,
schau Dir mal die DoEvents-Funktion an. Ein Auszug aus der Hilfe:
DoEvents ist für einfache Operationen besonders hilfreich, wenn z.B. einem Benutzer die Möglichkeit gegeben werden soll, einen Prozeß abzubrechen, nachdem er begonnen wurde, beispielweise die Suche nach einer Datei. Bei länger andauernden Vorgängen sollte die Steuerung besser mit Hilfe eines Zeitgebers an den Prozessor abgegeben werden, oder die Aufgabe sollte einer ActiveX-EXE-Komponente übertragen werden. Im zweiten Fall kann die Aufgabe vollkommen unabhängig von Ihrer Anwendung durchgeführt werden, und das Betriebssystem übernimmt das Multitasking und die Zuteilung der Prozessorzeit.
Vorsicht°°°Jedesmal wenn Sie die Steuerung zeitweise innerhalb einer Ereignisprozedur an den Prozessor abgeben, sollten Sie sicherstellen, daß die Prozedur nicht von einem anderen Teil des Codes aufgerufen wird, bevor der erste Aufruf beendet ist. Die Folgen eines solchen Aufrufs sind nicht vorhersehbar. Führen Sie DoEvents auch dann nicht aus, wenn Sie nicht ausschließen können, daß andere Anwendungen in irgendeiner Weise eine Verbindung mit der Prozedur herstellen, während das Betriebssystem die Ausführung steuert.
Ein einfaches Dummybeispiel mit 2 Commandbuttons und einem Label in einem Userform.
Commandbutton1 startet den Zähler. Mit Commandbutton2 ist der Spuk dann zu Ende.
Option Explicit

Private Sub CommandButton1_Click()
Label1.Caption = 1
Do
DoEvents
Me.Label1.Caption = Me.Label1.Caption + 1
Loop
End Sub


Private Sub CommandButton2_Click()
End
End Sub

Grüße Boris
Anzeige
AW: DoEvents
05.04.2006 21:20:13
Jürgen
Ja supie - mit DoEvents geht's ! - Danke Boris
Schöne Grüße Jürgen
AW: Prozedur mit Button beenden
05.04.2006 19:22:03
Matthias
Hallo Jürgen,
Warum lässt sich das Formular nicht mehr anklicken?
Weil du Excel keine Gelegenheit gibst, das abzufragen:

Sub MischeKarten()
While Mischen = True
ActiveCell.Value = Second(Now) 'Endlosschleife
DoEvents '<<<
Wend
End Sub

Gruß Matthias
AW: Prozedur mit Button beenden
05.04.2006 21:22:33
Jürgen
Dein Tip mit DoEvents war genau der Richtige.
Auch dir vielen Dank, Matthias.
Schöne Grüße Jürgen
Zusatz: Ausstieg aus Endlosschleife
05.04.2006 19:23:31
{Boris}
Hi Jürgen,
...auch die Esc-Taste nicht mehr hilft, sondern nur noch der Windows Taskmanager (Strg+Alt+Entf).
Ich hab´s jetzt zwar nicht getestet, aber in der Regel hilft auch die Tastenkombi Strg+Pause, um aus einer Endlosschleife auszusteigen.
Grüße Boris
Anzeige
AW: Zusatz: Ausstieg aus Endlosschleife
05.04.2006 21:26:02
Jürgen
Hallo Borris,
mit der Tastenkombi Strg+Pause konnte ich die Endlosschleife übrigens auch beenden.
Nochmals Danke für die Hilfe mit DoEvents.
Gruß Jürgen

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige