24.01.2018, 15:56
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:
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é
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 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é