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

Progressbar in Makro einbauen

Progressbar in Makro einbauen
31.08.2015 10:45:29
Shawn
Hallo Liebe Excel Gemeinde
Ich würde gerne in mein Makro eine Progressbar einbauen.
Weil das Makro bis an die 5min durchläuft und ich so einen anhaltspunkt hätte dass er noch Arbeitet.
Die Progressbar habe ich aus einem Beispiel Kopiert
Sub Progressbar1()
SW = ?                                       'Bis Makro zu Ende ist
Länge = 0
Schritt = PB1.Label1.Width / SW                 'Schrittbreite pro Aktualisierung
For i = 5 To SW
Cells(i, 1) = "Zeile " & i
Cells(i, 1).Interior.ColorIndex = 6
Länge = Länge + Schritt
PB1.Label2.Width = Länge
PB1.Label3.Caption = Format(i / SW, "0 %")
DoEvents
Next
Application.Wait (Now + TimeValue("0:00:2"))
Unload PB1
End Sub

Hier mein Makro worin die Progressbar dann hin müsste
Sub Lieferschein_DECO()
' LieferscheinDECO in Daten Produktion einbuchen
Dim ZeileNr As Long
Dim i As Long
ZeileNr = 19
i = 0
ActiveSheet.Unprotect "shsq"
While Sheets("Vorlage Lieferschein").Range("E" & ZeileNr).Value  ""
Sheets("Eingabe Daten Prod. Auftrag").Range("G2").Value = _
Sheets("Vorlage Lieferschein").Range("E" & ZeileNr).Value
Sheets("Eingabe Daten Prod. Auftrag").Range("M2").Value = _
Sheets("Vorlage Lieferschein").Range("C" & ZeileNr).Value
Sheets("Eingabe Daten Prod. Auftrag").Range("K2").Value = _
Sheets("Vorlage Lieferschein").Range("H" & ZeileNr).Value
Sheets("Eingabe Daten Prod. Auftrag").Range("C2").Value = _
Sheets("Vorlage Lieferschein").Range("B" & ZeileNr).Value
Call Einbuchen   'Zeile kopieren und einbuchen
i = i + 1
If i = 8 Then   '8 zeilen einbuchen dann wieder auf 0
i = 0
Sheets("Eingabe Daten Prod. Auftrag").Range("AG1").Value = _
Sheets("Eingabe Daten Prod. Auftrag").Range("AG1").Value + 1
End If
ZeileNr = ZeileNr + 1
Wend
Sheets("Eingabe Daten Prod. Auftrag").Range("AG1").FormulaLocal = "=HEUTE()"
If ZeileNr > 19 Then
MsgBox "Positionen auf Lieferschein " & ZeileNr - 19
Else
MsgBox "Bestellerfassung nicht Ausgeführt da auf Lieferschein E19 Leer ist !"
End If
Sheets("Eingabe Daten Prod. Auftrag").Range("C2").ClearContents
Range("G2").ClearContents
Range("K2").ClearContents
Range("M2").ClearContents
Sheets("Vorlage Lieferschein").Delete
Sheets("Eingabe Daten Prod. Auftrag").Range("V2:Y2").ClearContents
Sheets("Eingabe Daten Prod. Auftrag").Unprotect Password:="shsq"
Sheets("Eingabe Daten Prod. Auftrag").EnableAutoFilter = True
Sheets("Eingabe Daten Prod. Auftrag").Protect UserInterfaceOnly:=True, _
Password:="shsq"
End Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Progressbar in Makro einbauen
31.08.2015 10:50:23
Werner
Hallo,
ich habe deinen alten Beitrag wieder auf offen gestellt.
Werner

AW: Progressbar in Makro einbauen
31.08.2015 10:52:02
Werner
Hallo,
sorry, war im falschen Beitrag, stell wieder auf offen.
Werner

AW: Progressbar in Makro einbauen
31.08.2015 18:29:25
Matthias
Hallo Shawn,
gleich vornweg: Diese Befehle beschleunigen Makros beim Ausführen in sehr großen Arbeitsmappen erheblich. Vielleicht entfällt damit sogar die Notwendigkeit deiner Progressbar:
Application.Calculation = xlManual
Application.ScreenUpdating = False
Vergiss nicht, beim Beenden des Makros diese zurückzusetzen.
Falls du die Progressbar trotzdem einbauen möchtest, darfst du den 2. Befehl natürlich nicht verwenden.
Deine Probgressbar musst du in deiner Schleife einbauen. Startwerte sind dabei jedoch als öffentliche Variablen zu deklarieren, damit sie nicht bei jedem Aufruf der Anzeige zurückgesetzt werden.
Bsp:
Dim SW As Long, Länge As Long, Schritt As Long
Sub Lieferschein_DECO()
Dim ZeileNr As Long
Dim i As Long
SW = ?                                       'Bis Makro zu Ende ist
Länge = 0
Schritt = PB1.Label1.Width / SW
ZeileNr = 19
i = 0
ActiveSheet.Unprotect "shsq"
While '...
Call Einbuchen
Call Progressbar1
Wend
'...
Damit wird bei jedem Durchlauf der Schleife deine Aktualisierung derProgressbar aufgerufen. Das Aufräumen unterschlag ich dabei einfach mal, ließe sich aber auch einbauen.
Sub Progressbar()
Länge = Länge + Schritt
PB1.Label2.Width = Länge
PB1.Label3.Caption = Format(Länge / Schritt * SW, "0 %")
End Sub
Wie du jedoch dein SW bestimmst, musst du selber festlegen. Ob es ausreicht die Zellen in der Spalte zu zählen, die letzte beschriebene Zeile zu ermitteln, oder oder oder. Dafür müsste man die Dokumente besser kennen.
Ein kleiner Hinweis: Mit "Application.Statusbar = "Beispieltext"" kannst du ohne extra eine Userform zu gestalten Anmerkungen zu deinem Makro in der Statusbar anzeigen. Es ist kein Balken, jedoch ist eine Prozentzahl darstellbar.
While '...
Call Einbuchen
x = x + 1
Application.Statusbar = (x * 100 / SW) & " % erldigt."
Wend
Application.Statusbar = "Fertig"
lg Matthias

Anzeige
AW: Progressbar in Makro einbauen
31.08.2015 19:31:13
Shawn
Hallo Matthias
Werde es morgen im Büro mal mit den zellen in den spalten zählen probieren
Danke dir
Darf mann fragen wie du dir ein so Umfangreiches Excel Wissen
Angeeignet hast
Viele grüsse Shawn

AW: Progressbar in Makro einbauen
31.08.2015 19:37:38
Shawn
Hallo Matthias
Werde es morgen im Büro mal mit den zellen in den spalten zählen probieren
Danke dir
Darf mann fragen wie du dir ein so Umfangreiches Excel Wissen
Angeeignet hast
Viele grüsse Shawn

AW: Progressbar in Makro einbauen
01.09.2015 10:17:20
Matthias
Hallo Shawn,
das "umfangreich" würd ich mal nicht unterschreiben. Viel ist in Excel einfach nur Logik, Erfahrung aus vergangenen Projekten und (bei mir noch ein großer Anteil) Google. Den alten Hasen hier im Forum kann ich lang' nicht das Wasser reichen, da ich mich erst seit kurzem mit VBA beschäftige, aber mit jeder Aufgabe wächst das Wissen ein Stückchen mehr :)
lg Matthias

Anzeige
AW: Progressbar in Makro einbauen
02.09.2015 16:34:26
Shawn
Hallo Matthias
Habe "Application.Calculation = xlManual" mal ausprobiert
wird zwar schneller aber es fehlen Daten in Zeilen und Spalten die über verschiedene Sverweise zurückgreifen
Und ich kriegs mit der Progressbar einfach nicht hin.
Wie würde der Code aussehen wenn SW = Anzahl der Durchlaufenen Schleife in der Progressbar angezeigt bekomme ?
Vielen Dank
Ps. Ich verzweifle an dieser Progressbar

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige