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.

Ladebalken in For Each Abfrage einbauen
#1
Hallo zusammen,

nachdem mir Gast 123 so super mit dem Makro zur Seite Stand und ich das nun zum laufen bekommen habe,
würde ich gerne einen Ladebalken in Form einer Userform einbauen, da die Abfrage doch etwas dauert bei min. 280 Zeilen.


Hier mal meine Abfrage:
Code:
Option Explicit      '20.1.2017  Gast 123  Clever Form

Const AbgDatei = "MASTER HTIG PRODUCTION.xlsx"  'Original Name der Abgleich Datei
Const Deliver1 = "Overview"      'kann jedes Jahr geandert werden
Const MaschSpa = "F"    'Spalte der Maschinen Nummer (F) oder als Nummer
Const MZ1 = 19   '1.Zeile in Maschinenliste wahlweise 19 oder 22


'Module für Serien Nr in Delivered
'MS-Find Methode  (ist sehr langsam!!)

Sub SerienNr_vergleichen_Find()
Dim lzDV As Long, lzML As Long, OldTxt
Dim rFind As Range, MaschNr As String
Dim Wb As Workbook, DEL As Worksheet
Dim i As Long, n As Long, j As Long

On Error GoTo Fehler
Set Wb = Workbooks(AbgDatei)
Set DEL = Wb.Worksheets(Deliver1)
lzDV = DEL.Cells(Rows.Count, 1).End(xlUp).Row

'[f1,f2] = Time '** nur zum Test, spaeter bitte löschen

OldTxt = Application.StatusBar
Application.ScreenUpdating = False
With ThisWorkbook.Worksheets("Maschinenliste")
   lzML = .Cells(Rows.Count, 1).End(xlUp).Row
   'ganze Spalte G auf "Nein" setzen
   .Range("G" & MZ1 & ":G" & lzML) = "Nein"
 
   'Schleife zum suchen der Serien-Nr in Delivered
   For j = MZ1 To lzML
      Application.StatusBar = lzML & "  /  " & j
      MaschNr = .Cells(j, 5).Value
      If Left(MaschNr, 1) = "!" Then MaschNr = Mid(MaschNr, 2, 50)
      Set rFind = DEL.Columns(MaschSpa).Find(What:=MaschNr, after:=Cells(1, MaschSpa), LookIn:=xlValues, _
          LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)
         
        If Not rFind Is Nothing Then _
           .Cells(j, 7) = "Ja": n = n + 1
   Next j
End With
Unload UserformProgressbar
'[f2] = Time '** nur zum Test, spaeter bitte löschen

Application.StatusBar = OldTxt
Application.ScreenUpdating = True
MsgBox n & "  Maschinen aus der Liste sind in den Produktionshallen."
Exit Sub

Fehler:  MsgBox "Unerwarteter Fehler - Richtige Datei mit richtigem Blatt geöffnet ??"

End Sub
Ich hänge die Testdatei zu einem Balken mit dazugehörigen Makro mit an.
Ich weiß nur leider nicht wie ich den mit meiner Abfrage einbauen kann.  Man hat ja die variable j für die Anzahl der Zeilen die er ermittelt (letzte beschriebene Zeile) und die MZ1 mit der zeile mit der er anfängt in Const declariert.

Ich habe nur keine Ahnung wie ich das umbauen kann das der ladebalken als max wert eben die ermittelte zeile nimmt und dann auch läuft.
Meinen Testcode hab ich lieber mal nicht rein da es so ein durcheinander ist :D
Wäre froh wenn mir da jemand helfen könnte der Erfahrung damit hat.



VIelen Dank

Grüße René


Angehängte Dateien
.xlsm   OnlineVBA_Selbstgebaute_Fortschrittsanzeige.xlsm (Größe: 19,73 KB / Downloads: 1)
Antworten Top
#2
Hallo zusammen,

habe es hinbekommen und als erledigt markiert.


Grüße René
Antworten Top
#3
Hallo Rene,

auch wenn du das nun schon gelöst hat, würde ich immer versuchen, das Makro so weit zu optimieren, dass du keinen "Ladebalken" benötigst.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top


Gehe zu:


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