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

Fortschrittsanzeige funktioniert nicht

Fortschrittsanzeige funktioniert nicht
20.02.2004 13:23:07
Michael Rapp
Hallo Excel Freunde,
habe durch einen Hinweis aus diesem Forum einen Fortschrittsanzeiger auf der Seite von "Rob's Excel VBA Tips & Tricks" gefunden.
Hier ist das Problem damit: Die Fortschrittsanzeige funktioniert perfekt, nur leider nicht parallel zu dem Ablauf meiner Makros, für die ich eine Anzeige haben möchte. Nun dauert der ganze Ablauf doppelt so lange, und die Hälfte der Zeit gibt es keine Anzeige. Ist das überhaupt möglich, eine zeitgesteuerte Anzeige parallel zum Ablauf von Makros zu haben??
Hier ist der Code aus einem Standard Module:

Function fWriteStatus(ByVal intTheCount As Integer, _
ByVal intTheMax As Integer) As String
' aus dem Internet von "Rob's Excel VBA Tips & Tricks"
'16.2.2004 angepaßt durch MR
Dim intCount1 As Integer
Dim intCount2 As Integer
' First part of status bar
fWriteStatus = " |"
' Now add some spaces up to the value
' we wish to represent
For intCount1 = 1 To intTheCount
fWriteStatus = fWriteStatus & Chr(32)
Next intCount1
' add a box (is's a non-printing ascii
' character)
fWriteStatus = fWriteStatus & Chr(2)
' Fill the rest of the gauge with spaces
For intCount2 = intCount1 To intTheMax
fWriteStatus = fWriteStatus & Chr(32)
Next intCount2
' ...then add the end marker and a
' percentage complete figure.
fWriteStatus = fWriteStatus & "| " _
& Format(intTheCount / intTheMax, " 0% Die Verarbeitung Ihrer Information in allen Arbeitsblättern wird bald beendet werden.")
End Function


Sub sUsage()
For Count = 0 To 50
Application.StatusBar = fWriteStatus(Count, 50)
Application.Wait Now() + TimeValue("00:00:01")
Next
Application.StatusBar = False
End Sub

Dnake für jede Hilfe
Michael

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

Betreff
Datum
Anwender
Anzeige
AW: Fortschrittsanzeige funktioniert nicht
21.02.2004 08:05:13
andre
hallo michael,
woher soll die anzeige wissen, wie lange dein makro braucht? damit es klappt müsstest du die laufzeit des makros wissen. wenn die immer einheitlich ist dann kannst du die fest programmieren oder du kannst die anhand der datenmenge usw. ermitteln und damit variabel gestalten. das wird aber oft nicht klappen wenn du mit unterschiedlichen daten, unterschiedlichen rechnern, unterschiedlichen usern ... arbeitest. und bei einer usereingabe ist es auch schwierig, die zeit zu programmieren, die der user gerdae seine kaffeetasse hält und daher nicht gleich was eingeben kann ;-)
ich nehme statt dessen auch oft eine ausschrift nach dem motto bearbeite schritt1 von viele ...
gruss andre
Anzeige
AW: Fortschrittsanzeige funktioniert nicht
21.02.2004 11:39:04
Michael Rapp
Hallo Andre,
die richtige Zeit zu treffen, ist tatsächlich eine Herausforderung. Da ich die Fortschrittsanzeige bei einer bestimmten Kombination von Makros benutzen, würde ich mich damit zufrieden geben, eine bestimmte Zeit zu verwenden.
Das Problem ist jedoch, zwei Prozesse parallel nebeneinander laufen zu lassen. Das klappt nicht mit der Funktion "fWriteStatus" bei mir und meine Frage ist, ob das in Excel überhaupt möglich ist. Vielleicht ist es für Excel möglich in der Zeitspanne Application.Wait Now()+ TimeValue("00:00:01") etwas anderes zu machen als zu warten.
Gruss
Michael
Anzeige
AW: Fortschrittsanzeige funktioniert nicht
21.02.2004 12:15:50
andre
hallo michael,
für die schedule-aufgaben musst du application.ontime nehmen.


Sub Zeitablauf()
  Workbooks.Open "c:\test.xls"
  Application.OnTime Now + TimeValue("00:01:00"), "ExcelAus"
End Sub
Sub ExcelAus()
  Workbooks("test.xls").Saved = True
  Application.DisplayAlerts = False
  Application.Quit
End Sub

     Code eingefügt mit Syntaxhighlighter 2.5

gruss andre
Anzeige
AW: Fortschrittsanzeige funktioniert nicht
24.02.2004 02:28:59
Michael Rapp
Hallo Andre,
bin erst jetzt dazu gekommen, deinen Vorschlag zu testen. Danke für deine Arbeit. Bin mit momentan nicht sicher, wie ich das bei einer Fortschrittsanzeige einbauen kann, die davon lebt immer wieder sich zu verändern. Die Zeile:
Application.OnTime Now + TimeValue("00:01:00"), "ExcelAus"
braucht ja eine Befehl, der ausgeführt werden soll. Ich hatte das in einer Schleife von 0 bis 20 verwendet. Da macht es keinen Sinn einen Befehl aufzurufen:

Sub sUsage()
For Count = 0 To 20
Application.StatusBar = fWriteStatus(Count, 20)
Application.Wait Now() + TimeValue("00:00:01")
Next
End Sub

Gruß
Michael
Anzeige
AW: Fortschrittsanzeige funktioniert nicht
24.02.2004 05:53:50
andre
hallo michael,
das excelaus ist doch der befehl - damit wird ein makro aufgerufen, was im beispiel die mappe schließt und excel beendet. du kannst da stattdessen die anzeige der statusleiste programmieren...
gruss andre
AW: Fortschrittsanzeige funktioniert nicht
24.02.2004 13:16:19
Michael Rapp
Hallo Andre,
da hab ich ganz schön auf der Leitung gestanden! Deine Code funktioniert gut. Habe noch ein kleineres Problem mein Fortschrittsmakro aufzurufen. Leider findet Excel das aufgerufene Makro in der von mir verwendeten Syntax nicht. Hier ist der vereinfachte Code, das 60 sec laufen sollte:

Sub Fortschritt(ByVal i As Integer)
Application.StatusBar = "Fortschritt ist " & i * 10 & "%"
End Sub


Sub sUsage()
Dim i As Integer
For i = 1 To 10
Application.OnTime Now + TimeValue("00:00:06"), "Fortschritt(i)"
Next i
Application.StatusBar = ""
End Sub


Gruss
Michael
Anzeige
AW: Fortschrittsanzeige funktioniert nicht
24.02.2004 16:53:00
andre
hallo michael,
wir waren schon ganz dicht dran. ob man einen parameter übergeben kann ist noch offen, ich hab's mal über eine public-variable programmiert. richtig funktionieren tuts so:


Public As Integer
Sub Fortschritt()
  i = i + 1
  Application.StatusBar = "Fortschritt ist " & i * 10 & "%"
  If i > 10 Then
    Application.StatusBar = ""
  Else
    sUsage
  End If
End Sub
Sub sUsage()
  Application.OnTime Now + TimeValue("00:00:06"), "Fortschritt"
End Sub

     Code eingefügt mit Syntaxhighlighter 2.5

gruss andre
Anzeige
AW: Fortschrittsanzeige funktioniert nicht
25.02.2004 13:42:03
Michael Rapp
Hallo Andre,
Klappt wunderbar! Habe eine Messagebox eingefügt, um zu testen, ob der Code tatsächlich parallel weiterläuft. Die Message stoppt die Anzeige in der Statuszeile, soblad sie jedoch weggeklickt ist, sieht man, dass die Fortschrittsanzeige weitergelaufen ist. Hier mein Code:
Public intcounter As Integer
Public intmax As Integer

Sub Fortschritt()
intcounter = intcounter + 1
Application.StatusBar = "Fortschritt ist " & intcounter * 100 / intmax & "%"
If intcounter > intmax Then
Application.StatusBar = ""
Else
Timing
End If
End Sub


Sub Timing()
Application.OnTime Now + TimeValue("00:00:01"), "Fortschritt"
End Sub


Sub Callup()
intmax = 100
Call Fortschritt
MsgBox "Makro Callup ist fertig"
End Sub


Vielen Dank
Michael
Anzeige
danke für die rückmeldung
25.02.2004 17:29:45
andre
... freut mich, dass es läuft.
gruss andre

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige