Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Fortschrittsanzeige graphisch oder in %
#1
Tag zusammen,

Habe ein Excel Sheet, welches mittels Abfragen mehrere hundert Datensatze aus verschiedenen anderen Tabellen importiert und  danach in Power Query Berrechnungen damit macht.
Der Import und die Berrechnung dauern ca. 10 Minuten. Aktuell sehe ich nur am Mauszeiger, dass das Makro noch am laufen ist.

Gibt es eine Möglichkeit einer Fortschrittsanzeige, graphisch oder in %. Irgend etwas wo der Anwender den Fortschritt sieht oder wie lange es ca. noch dauert bis das Makro abgeschlossen ist?
Aktuell denkt der Anwender jedesmal Excel sei abgestürzt, weil es so lange dauert.

Grüsse Pean
Antworten Top
#2
Moin!
Das liegt an Zeile 42 Deines Makros!
Ansonsten:
Was hat VBA, das PQ nicht könnte?
(ist bis dato eine rein akademische Frage)

Gruß Ralf

und P.S.:
Eine Fortschrittsanzeige muss ja auch berechnet werden, verlangsamt die Kiste zusätzlich.
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#3
Hallo Ralf,


Zitat:Das liegt an Zeile 42 Deines Makros!



vermute ich auch. 

@ Pean: zeige doch mal deinen Quelltext, oder am besten eine Beispieldatei, dann könnte man versuchen die Sache zu optimieren.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#4
Tach Zusammen,



Ja habe euren Hinweis verstanden. Könnte schon gut sein, das Makrozeile 42 nicht optimal ist Smile

Bin ja kein Spezi, aber die Optimierung des Makros scheint mir eher schwierig zu sein. Das Makro macht nichts anderes als 10 Datenabbfragen auf andere Tabellen zu aktualisieren, welche total gegen 3000 Zeilen beinhalten. Nach erfolgter Aktualisierung dauert es nochmals ewig, bis das Datenmodell geladen ist für die Berrechnungen. Die Einbettung einer Fortschrittsanzeige ist vermutlich eher schwierig.

Ich verfolge nun einen anderen Ansatz. Wenn ich ja weiss, dass der gesamte Prozess 10 Minuten dauert, könnte ich ja parallel ein entsprechender Countdown in einer Userform laufen lassen.



Habe dazu einen tollen BeispielCode gefunden, welcher in einer .xls Version prima funktioniert. Wenn ich das ganze in mein .xlsm Dokument kopiere, gibts eine Fehlermeldung bei rot

Die Frage ist nur wieso, da habe ich keine Ahnung. Eine Idee?



in Userform



Option Explicit

   

    Private Sub UserForm_Activate()

    DoEvents

    Call tt

    End Sub

   

    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

    If CloseMode = 0 Then

      MsgBox "Hinweisfenster nicht schliessen!", vbCritical

      Cancel = 1

    End If

    End Sub

   

    Private Sub UserForm_Initialize()

    Me.Label1.Left = 0

    Me.Label1.Height = Me.Height

    Me.Label1.Width = 0

    Me.Label1.Top = 0

    UserForm1.Repaint

    End Sub





in Modul



Option Explicit

   

    Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

   

    Sub tt()

   
   Dim N

    UserForm2.Show 0

    For N = 0 To 150

      Call MeinBalken(150, N)

      Sleep 100  'Millisekunden

      DoEvents

    Next N

    DoEvents

    Sleep 300

    Unload UserForm1

    DoEvents

    End Sub

   

    Sub MeinBalken(ByVal Anzahl As Long, ByVal N As Long)

    Dim Breite As Single

    Breite = UserForm1.Width / Anzahl * N

    With UserForm1

      .Label1.Width = Breite

      .Caption = "Verlauf " & Format(N / Anzahl, "0.0 %")

      .Caption = .Caption & " " & N & " / " & Anzahl

      .Repaint

    End With

    End Sub







Grüsse

Pean

Das einzige was ich noch ändern müsste, damit es auf meinem Notebook lief


Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)


Angehängte Dateien
.xls   Countdown.xls (Größe: 51,5 KB / Downloads: 7)
Antworten Top
#5
Hallo Pean,

(16.04.2020, 21:44)Pean schrieb: Habe dazu einen tollen BeispielCode gefunden, welcher in einer .xls Version prima funktioniert. Wenn ich das ganze in mein .xlsm Dokument kopiere, gibts eine Fehlermeldung bei rot

Die Frage ist nur wieso, da habe ich keine Ahnung. Eine Idee?

vielleicht, wenn Du uns auch die *xlsm zeigst. Wink

Gruß Uwe
Antworten Top
#6
Hallo Pean,

der eigentliche Quelltest wäre interessanter gewesen als der von der Fortschrittanzeige.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#7
Hallöchen,

Zitat:Wenn ich das ganze in mein .xlsm Dokument kopiere, gibts eine Fehlermeldung
speichere die xls mal als xlsm, dann klappt's auch mit dem Nachbarn Smile
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste