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

Makro läßt sich nicht stoppen

Makro läßt sich nicht stoppen
23.08.2007 20:28:00
Born
Hallo Excel-Freunde,
beim Versuch, eine Fortschrittsleiste zu basteln stoße ich auf das Problem,
daß sich der Prozess, wenn einmal gestartet mit der esc-Taste nciht mehr
abbrechen läßt. Kann mir vielleicht einer erklären, warum, oder noch besser,
wie ich das ändern kann?
Hier der Code:
Option Explicit

Sub ShowDialog()
Load ProgressDlg
ProgressDlg.Show
End Sub



Sub Main()
Dim i As Long, tot As Long
tot = 100
ProgressDlg.Caption = "Prosessing data, please wait..."
For i = 1 To tot
Range("HD2:HD327").Copy
Range("HN2") = Range("HN2") + 1
Cells(2, 235 + i).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
If i Mod 1 = 0 Then ProgressBar i / tot
' do something
Next i
Unload ProgressDlg
End Sub



Sub ProgressBar(PctDone As Single)
With ProgressDlg
.lblDone.Width = PctDone * (.lblRemain.Width - 2)
.lblPct.Caption = Format(PctDone, "0%")
End With
'The DoEvents statement is responsible for the form updating
DoEvents
End Sub


Danke,
Born

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Tja, da wirst du wohl mit DoEvents eine...
24.08.2007 04:38:21
Luc:-?
...Ereignislawine lostreten, Born,
was man ja hier sonst nicht sehen kann. Zumindest ist hier nirgends zu sehen, dass du die Ausführung von Ereignissen irgendwo unterbrichst! Wenn ein Ereignis einen Vorgang auslöst (z.B. eine Subroutine aufruft) und der wiederum das/ein Ereignis auslöst, das einen Vorgang auslöst (z.B. eine Subroutine aufruft) und der wiederum das/ein Ereignis auslöst, das einen Vorgang auslöst (z.B. eine Subroutine aufruft) und der wiederum das/ein Ereignis auslöst, das einen Vorgang auslöst (z.B. eine Subroutine aufruft) und der wiederum das/ein Ereignis auslöst, das einen...usw. kommst du nie aus dieser Endlosschleife raus (auch nicht mit einer MsgBox mit Cancel-Button!), weil sicher etliche Subroutinen xmal neu gestartet wdn bevor der jeweils vorhergehende Lauf abgeschlossen ist.
Das ist wie das Bild von dem, der in einen Spiegel schaut, in dem er sich sieht wie er in einen Spiegel schaut, in dem er sich sieht wie er in einen Spiegel schaut, in dem er sich sieht wie er in einen Spiegel schaut, in dem er sich sieht wie er in einen Spiegel schaut...
Eventhandling ist nichts für VBA-Anfänger! Damit muss man sehr aufmerksam umgehen und alle möglichen Nebeneffekte (wie diesen) berücksichtigen. Um so etwas zu vermeiden, sollte auch mal Application.EnableEvents=False/True eingesetzt wdn...
Gruß Luc :-?

Anzeige
AW: Tja, da wirst du wohl mit DoEvents eine...
24.08.2007 18:17:00
Born
Hallo Luc,
danke für die Ausführungen. Ja, ich bin VBA-Anfänger. Habe einfach dringend eine
progress-bar gebraucht und im INternet diesen Code gefunden. Der erste der funktionierte.
Hättest Du möglicherweise dafür eine einfachere Lösung?
Gruß und Dank,
Marlon

Sowas wird hier alle naselang gefragt,...
25.08.2007 05:22:00
Luc:-?
...Born!
Schau doch mal bspw hierauf oder auf Hajo's Website, da ist, glaub ich, auch was. Außerdem sicher hier im Archiv... ;-)
Gruß Luc :-?

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige