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

Statusanzeige während For...Next Schleife läuft

Statusanzeige während For...Next Schleife läuft
25.10.2002 13:57:40
Chris
Hallo zusammen

Gleich noch ein Problem. Habe eine For...Next Schlaufe, die einige Sekunden läuft. Möchte gerne z.B. per Userform den Statusanzeigen also eine Meldung "Bitte warten" und dann auch noch z.B. 1 von 1000 geladen, 2 von 1000 geladen etc.

Vereinfacht würde das dann etwa so aussehen:

Userform1.Show
For i = 1 to 100
Label1 = i
Next i
Userform1.Hide


Geht aber nicht, da Excel sobald das Userform angezeigt wird anhält und erst wieder weiterläuft, wenn ich es manuell schliesse.

Hat jemand eine Idee? (MsgBox oder ähnlich wäre auch eine Variante, aber gundsätzlich gleiches Problem)

Danke und Gruss
Chris

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

Betreff
Datum
Anwender
Anzeige
Re: Statusanzeige während For...Next Schleife läuft
25.10.2002 13:59:47
Hajo_Zi
Hallo Chris

für den Fall habe ich irgendwann mal einen Laufbalken beschrieben. Vielleicht reicht es.

374. Fortschrittanzeige
Erstelle eine UserForm MIt einem Label gebe ihm den Namen LBL_Blau, Caption=""; Backcolor Schaltflächentext blau, die Höhe so hoch wie der Laufbalkensein sein die Breite ist Egal.
Ordne ein CommandButton auf der Userform an Gestaltung nach Deinen Wünschen folgenden Code in der Userform
Option Explicit
Private Sub CommandButton1_Click()
Dim rng As Range
Dim Faktor As Single
Dim Letzte As Long
ActiveSheet.Unprotect Password:="sokrates"
' Anzahl der Zellen erMIitteln
Letzte = ActiveSheet.Cells.SpecialCells(xlLastCell).Row * ActiveSheet.Cells.SpecialCells(xlLastCell).Column
' Maximale größe des Label auf der Useform 280
Faktor = 280 / Letzte: LBL_Blau.Width = 0
' UsedRange = benuzter bereich
For Each rng In ActiveSheet.UsedRange
LBL_Blau.Width = LBL_Blau.Width + Faktor: DoEvents
If rng.Locked = False Then rng.Value = ""
Next rng
ActiveSheet.Unprotect Password:="sokrates"
Range("B6").Value = ""
ActiveSheet.Protect Password:="sokrates", DrawingObjects:=True, Contents:=True, Scenarios:=True
Range("B17").Activate
UserForm1.Hide
End Sub
Private Sub UserForm_Initialize()
LBL_Blau.Width = 0
End Sub

und folgenden Code in ein Modul
Sub ClearUnlockedCells()
UserForm1.Show
End Sub


Gruß Hajo

Anzeige
Re: Statusanzeige während For...Next Schleife läuft
25.10.2002 14:00:37
Martin Beck
Hallo Chris,

erledige das direkt über die StatusBar. Und/Oder schaue mal in der Recherche unter Fortschrittsanzeige, Progressbar etc., da wirst Du bestimmt fündig.

Gruß
Martin Beck

Re: Statusanzeige während For...Next Schleife läuft
25.10.2002 14:03:40
Chris
Hallo Hajo

Der Laufbalken wäre das nächste gewesen, was ich versucht hätte anzupacken.

Vielen Dank für dein Makro, spart mir einen Haufen Arbeit.

Habs noch nicht ausprobiert, aber wird schon schief gehen.

Thanx und Gruss
Chris

Re: Statusanzeige während For...Next Schleife läuft
25.10.2002 14:06:59
Chris
Hallo Martin

Danke auch dir. Habe gar nicht gewusst, dass es StatusBar als Befehl gibt. Kann ich gut gebrauchen.

Gruss
Chris

Noch ein konkretes Beispiel
25.10.2002 14:12:12
Martin Beck
Hallo Chris,

Gruß
Martin Beck

Anzeige
Re: Noch ein konkretes Beispiel
25.10.2002 15:41:46
Chris
Danke auch dir Martin recht herzlich. Funktioniert tipp topp. Nur nebenbei, musste Application.DisplayStatusBar = True in Application.StatusBar = True abändern.

Noch eine kleine Frage, wenn ich schonmal dran bin. Bei der InputBox gibt es einen OK und CANCEL Button.

Möchte nun, dass wenn kein Wert in die InputBox eingegeben wird (""), dann soll das Makro nochmals von vorne gestartet werden bzw. eine MsgBox. Bei Cancel soll das Makro mit END verlassen werden.

Problem ist dass sowohl keine Eingabe, wie auch Cancel den Wert "" zurück gibt, weshalb ich diese beiden Ereignis nicht unterscheiden kann.

Könnte natürlich ein Userform statt Inputbox machen, aber vielleicht weisst du grad einen einfacheren Weg.

Danke und Gruss
Chris

Anzeige
Inputbox
25.10.2002 15:56:23
Martin Beck
Hallo Chris,

das einfachste wäre, einen Defaultwert vorzugeben. Der kann zwar auch gelöscht werden, aber ...

Beispiel:

f = InputBox("Bitte irgendwas eingeben", "Abfrage", "Irgendwas")

Gruß
Martin Beck

Re: Inputbox-Methode
25.10.2002 16:01:48
Martin Beck
Hallo Chris,

noch besser ist es, Du verwendest die Inpubox-Methode an Stelle der Inputboy-Funktion. In diesem Fall gibt es folgende Rückgabewerte:

OK: eingegebener Inhalt oder Leerstring
ABBRECHEN: Wahrheitswert FALSE

Und die kann man schön getrennt abfangen.

Beispiel:

f = Application.InputBox("Bitte irgendwas eingeben", "Abfrage", "Irgendwas")
MsgBox f

Gruß
Martin Beck

Anzeige
Re: Inputbox-Methode
25.10.2002 16:09:32
Chris
Judihui... ins Schwarze getroffen.

Thanx
Chris

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige