Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1060to1064
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
Inhaltsverzeichnis

Fortschrittsanzeige in Statuszeile

Fortschrittsanzeige in Statuszeile
19.03.2009 14:36:38
Lang
Guten Tag,
ich habe hier eine "LaufschriftInStatusZeile.htm" gefunden. Ein tolles Teil! Wäre geradezu optimal.
Mein Problem ist nun, wie setze ich sie in Prozeduren ein. Habe zwar einiges ausprobiert wie z.B. "LaufschriftInStatusZeile" in einer Prozedur und umgekehrt zu einzusetzen. Aber ich lande immer in einer Endlosschleife.
Vielen Dank vorab!
Liebe Grüße!
Klaus

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fortschrittsanzeige in Statuszeile
19.03.2009 17:58:08
Fred
Hi,
spontan würde ich sagen, es liegt an deinem Code.
Aber im Ernst, wer soll mit der Beschreibung einen qualifizierten Rat geben?
mfg Fred
AW: Fortschrittsanzeige in Statuszeile
19.03.2009 19:44:11
Tino
Hallo,
meinst Du sowas?
https://www.herber.de/bbs/user/60477.xls
PS: zeige uns doch mal Dein tolles Teil, sonst können wir nichts damit anfangen.
Gruß Tino
AW: Fortschrittsanzeige in Statuszeile
20.03.2009 13:05:27
Lang
Hallo Fred, hallo Tino,
nachfolgend das von mir angesprochene "tolle Teil" - "LaufschriftInStatusZeile" - aus Thema: Allgemein - Gruppe Statusleiste. An sich funktioniert es. ABER was muss ich tun, damit es während einer VBA-Routine abläuft? Wie muss ich sie einbinden? Erst dann macht es ja Sinn.
Die Empfehlung von Tino zur Datei "60477.xls" ist aber auch sehr interessant. Damit wird sogar die ganze Breite der Statuszeile genutzt und da ein Lauf von rechts nach links erfolgt, ist diese Lösung noch auffallender.
Wäre für beide Lösungen dankbar!
Gruß Klaus
--------------------------------------------------------------------------------
Hier die Kopie des Code für "LaufschriftInStatusZeile" (Herber):
Problem: Wie kann ich in der Statusleiste während des Abarbeitens einer VBA-Routine eine Fortschrittsanzeige anzeigen lassen?
ClassModule: DieseArbeitsmappe

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.DisplayStatusBar = bln
End Sub



Private Sub Workbook_Open()
bln = Application.DisplayStatusBar
Application.DisplayStatusBar = True
End Sub


StandardModule: Modul1
Public bln As Boolean
Sub Fortschritt()
Dim iCounter As Integer
Application.DisplayStatusBar = True
For iCounter = 1 To 10
StatusLED "Bisher abgearbeitet: ", iCounter / 10
Application.Wait Now + TimeSerial(0, 0, 1)
Next iCounter
Application.StatusBar = False
End Sub



Private Function StatusLED(sMsg As String, sPct As Single)
Dim iPct As Integer, iReps As Integer
With WorksheetFunction
iPct = .Round(sPct, 2) * 100
iReps = Int(iPct / 10)
Application.StatusBar = sMsg & .Rept(Chr(14), iReps) & _
.Rept("*", 10 - iReps) & "  " & iPct & "%"
End With
End Function


Anzeige
AW: Fortschrittsanzeige in Statuszeile
20.03.2009 16:25:55
Tino
Hallo,
Du musst den Code an die Anzahl Deiner Schleifendurchläufe anpassen und
ihn auch in Deine Schleife entsprechend einbauen.
Hier mal ein Beispiel für 100 Durchläufe in der Schleife.

Public bln As Boolean
Sub Fortschritt()
Dim iCounter As Integer
Application.DisplayStatusBar = True
For iCounter = 1 To 100
If iCounter Mod 10 = 0 Then
StatusLED "Bisher abgearbeitet: ", iCounter / 100
Application.Wait Now + TimeSerial(0, 0, 1)
End If
Next iCounter
Application.StatusBar = False
End Sub
Private Function StatusLED(sMsg As String, sPct As Single)
Dim iPct As Integer, iReps As Integer
With WorksheetFunction
iPct = .Round(sPct, 2) * 100
iReps = Int(iPct / 10)
Application.StatusBar = sMsg & .Rept(Chr(7), iReps) & _
.Rept("*", 10 - iReps) & "  " & iPct & "%"
End With
End Function


Gruß Tino

Anzeige
AW: Fortschrittsanzeige in Statuszeile
20.03.2009 18:04:08
Lang
Hallo Tino,
ich versuche es zu verstehen komme aber nicht klar.
Hier die bei mir funktionierende Prozedur (ist auch hier aus dem Forum, etwas angepasst).
Wo und wie verwende ich jetzt die Fortschrittsanzeige?
Sub DurchSuchVerz()
Dim wks As Worksheet
Dim iCounter As Integer, iRow As Integer
iRow = 1
With Sheets(1)
.Activate
.Unprotect
End With
Set wks = ActiveSheet
Range("A4:A10000").ClearContents
Range("B1:B10000").ClearContents
Do Until IsEmpty(wks.Cells(iRow, 1))
With Application.FileSearch
.NewSearch
.LookIn = wks.Cells(iRow, 1).Value
.Filename = wks.Range("B1").Value ' lt. Zellenangabe
.Execute
For iCounter = 1 To .FoundFiles.Count
Cells(iCounter, 2).Value = .FoundFiles(iCounter)
ActiveSheet.Hyperlinks.Add Cells(iCounter, 2), .FoundFiles(iCounter)
Next iCounter
End With
iRow = iRow + 1
Loop
Anzeige
AW: Fortschrittsanzeige in Statuszeile
20.03.2009 19:18:17
Tino
Hallo,
ich würde sagen für diesen Fall ist diese Art einer Anzeige ungeeignet.
Weil eine genaue Berechnung der Anzahl nicht so einfach ist.
Du weist zuvor nicht wie viele Dateien gefunden werden, somit ist dieser Wert unbekannt,
also müsstest Du zuvor die Anzahl der Dateien ermitteln um eine genaue anzeige zu bekommen.
Ob dies aber noch einen Sinn macht weis ich auch nicht.
Persönlich würde ich in diesem Fall auf solch eine Anzeige verzichten und nur anzeigen,
dass die Daten zurzeit gelesen werden oder sowas in der Art.
Kann Deinen Code auch nicht anpassen, weil ich xl2007 habe und da funzt Application.FileSearch nicht.
Ich lass die Frage für Dich mal offen.
Gruß Tino
Anzeige
versuche es mal so.
21.03.2009 08:13:20
Tino
Hallo,
ungetestet

Sub DurchSuchVerz()
Dim wks As Worksheet
Dim iCounter As Integer, iRow As Integer
Dim FileCount As Single, iCountFile As Single
iRow = 1
With Sheets(1)
.Activate
.Unprotect
End With
Set wks = ActiveSheet
Range("A4:A10000").ClearContents
Range("B1:B10000").ClearContents
Do Until IsEmpty(wks.Cells(iRow, 1))
With Application.FileSearch
.NewSearch
.LookIn = wks.Cells(iRow, 1).Value
.Filename = wks.Range("B1").Value ' lt. Zellenangabe
.Execute
FileCount = FileCount + .FoundFiles.Count
End With
iRow = iRow + 1
Loop
iRow = 1
Do Until IsEmpty(wks.Cells(iRow, 1))
With Application.FileSearch
.NewSearch
.LookIn = wks.Cells(iRow, 1).Value
.Filename = wks.Range("B1").Value ' lt. Zellenangabe
.Execute
For iCounter = 1 To .FoundFiles.Count
Cells(iCounter, 2).Value = .FoundFiles(iCounter)
ActiveSheet.Hyperlinks.Add Cells(iCounter, 2), .FoundFiles(iCounter)
iCountFile = iCountFile + 1
StatusLED "Bisher abgearbeitet: ", iCountFile / FileCount
Next iCounter
End With
iRow = iRow + 1
Loop
End Sub
Private Function StatusLED(sMsg As String, sPct As Single)
Dim iPct As Integer, iReps As Integer
With WorksheetFunction
iPct = .Round(sPct, 2) * 100
iReps = Int(iPct / 10)
Application.StatusBar = sMsg & .Rept(Chr(7), iReps) & _
.Rept("*", 10 - iReps) & "  " & iPct & "%"
End With
End Function


Gruß Tino

Anzeige
AW: versuche es mal so.
23.03.2009 10:24:22
Lang
Super Tino! Klappt einwandfrei! Danke!
Gruß Klaus

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige