Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1480to1484
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

Fortschrittsbalken + Keine Rückmeldung

Fortschrittsbalken + Keine Rückmeldung
08.03.2016 16:21:15
Alex

Hallo zusammen,
ich habe eine Berechnung (aus mehreren Subs, userformen,...) die ca. 1-3 Minuten läuft nach Start-Klick.
Teilweise kommt auch nach der Hälfte "Keine Rückmeldung" in der Userform, aber wenn man wartet, wird hinterher alles korrekt angezeigt.
Frage1: Ich habe mir schon selber aus verschiedenen Baukästen einen Fortschrittsbalken gebastelt, funktioniert auch super für EINE For-schleife...
Die Funktion bei mir hat aber an die 10 Schleifen, wobei 2 Schleifen wahrscheinlich für 95% der Laufzeit verantwortlich sind. Es würde also reichen, wenn ich diese 2 Schleifen abdecke und daraus mir einen Gesamtfortschritt bastel.
Hat jemand sowas schon mal gemacht oder ist das möglich?
Hab selber leider keine Ahnung wie das aussehen könnte....
Frage 2: Gibt es eine Möglichkeit, dass "Keine Rückmeldung" unterdrückt wird?
Habe was mit "DoEvents" gefunden, aber leider wurde mir nicht klar, wie ich das anwenden muss bzw. an welche Stelle ich das schreib muss.
Der Fehler tritt an einer "For each" Schleife auf, an der er 1-2 Minuten rumrechnet.
DANKE!!
Gruß Alex

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

Betreff
Datum
Anwender
Anzeige
10 Schleifen?
08.03.2016 17:00:26
RPP63
Hi Alex!
Schon klar, dass sich Schleifen manchmal nicht verhindern lassen.
Ich will nichts versprechen, aber hier wurde Code schon um den Faktor 2.000 beschleunigt.
Schon mal über Arrays nachgedacht.
Anyway: die Kenntnis des Codes wäre nicht verkehrt.
Ich lasse hier natürlich offen.
Gruß Ralf

AW: 10 Schleifen?
09.03.2016 10:05:10
Alex
Hallo Ralf,
Hier in einem anderen Thread von mir, hat jemand mir einen Tipp gegeben und dadurch hat sich das Programm um den Faktor 1000 beschleunigt, der Hammer, was ein kleiner "Codebaustein" ausmacht :)
Leider ist meine Datei zu groß, um sie direkt hier im Forum hochzuladen.
Daher leider auf einem externen Server.
Nicht wundern über den Inhalt der Worksheets, habe einfach mit aaa dfg etc. den Inhalt ersetzt.
http://www.file-upload.net/download-11376619/HerberForum.xlsm.html
Alle für den Fortschrittsbalken relevanten Sub's sind in Modul 1 und Userform PB1.
Bedienung für den Fortschrittsbalken:
-Excel öffnen
- "Kick" auf Unterstützungstool für anlaufprojekte
- Links oben unter der Kategorie Immobilien "Neubau" auswahlen
- auf anzeigen klicken
Dann kommt der Fortschrittsblaken für eine Schleife (Sub checkliste) der 2 aufwendigen schleifen
Wie schaffe ich auch noch einen Fortschrittsbalken für den "Sub Gruppieren" einzubauen
und dann natürlich ein Traum, die beiden Fortschrittsbalken in einem darzustellen.
Besten Dank für jede Hilfe!
Gruß Alex

Anzeige
nur ein Hinweis,
14.03.2016 15:59:31
Michael
Hi Alex,
ich persönlich mag keine Datein, die auf irgendwelchen Servern liegen - es muß doch möglich sein, sie so abzuspecken, daß sie ins Forum passen: ca. 350 KB ist schon ein Haufen Holz!
Aber gut: ich sehe beim Überfliegen nirgends "10 Schleifen"; gib bitte an, in welchem Modul welche Sub/Function der Übeltäter ist.
Was definitiv falsch ist, ist der Block in Modul1:
Sub gruppieren() ' Hier soll auch eine Fortschrittsbalken hinterlegt werden
Dim rngZelle As Range
For Each rngZelle In Worksheets("PM").UsedRange.Columns(1).Cells
If Left(rngZelle.Value, 2) = "1." Or _
Left(rngZelle.Value, 2) = "2." Or _
Left(rngZelle.Value, 2) = "3." Or _
Left(rngZelle.Value, 2) = "4." Or _
Left(rngZelle.Value, 2) = "5." Or _
Left(rngZelle.Value, 2) = "6." Or _
Left(rngZelle.Value, 2) = "7." Or _
Left(rngZelle.Value, 2) = "8." Or _
Left(rngZelle.Value, 2) = "9." Or _
Left(rngZelle.Value, 2) = "10." Or _
Left(rngZelle.Value, 2) = "11." Or _
Left(rngZelle.Value, 2) = "12." Or _
Left(rngZelle.Value, 2) = "13." Or _
Left(rngZelle.Value, 2) = "14." Or _
Left(rngZelle.Value, 2) = "15." Or _
Left(rngZelle.Value, 2) = "16." Or _
Left(rngZelle.Value, 2) = "17." Or _
Left(rngZelle.Value, 2) = "18." Or _
Left(rngZelle.Value, 2) = "19." Or _
Left(rngZelle.Value, 2) = "20." Then
rngZelle.Rows.Group
End If
Next rngZelle
ActiveSheet.Outline.ShowLevels RowLevels:=1
End Sub
Das Ding ist a) relativ langsam, weil es alle Zellen "im Blatt" durchläuft; das Ermitteln des untersten Wertes und Laden in ein Array ist ein bißchen schneller.
Der "echte" Fehler ist allerdings die Abfrage ab "10.": mit "left" holst Du Dir nur die linken 2 Werte, und "10." hat 3 Zeichen. Ich würde nach dem "." suchen, und wenn der an 2. oder 3. Position liegt, schauen, ob links Zahlen bzw. Ziffern sind:
Sub gruppieren() ' Hier soll auch eine Fortschrittsbalken hinterlegt werden
Dim rngZelle As Range
Dim t As String, p As Long
Const ziffern = ".1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20."
For Each rngZelle In Worksheets("PM").UsedRange.Columns(1).Cells
t = rngZelle.Text
p = InStr(t, ".")
If p = 2 Or p = 3 Then
t = Left(t, p)
If InStr(ziffern, "." & t) > 0 Then rngZelle.Rows.Group
End If
Next rngZelle
ActiveSheet.Outline.ShowLevels RowLevels:=1
End Sub
Vielleicht hilft Dir das ein Stückchen weiter...
Schöne Grüße,
Michael

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige