For-Next-Loop
07.07.2022 10:38:48
daniel
ich habe ein xls-File, in welches manuell ca. 5000 datensätze kopiert werden. anschliessend werden diese datensätze per makro nach kalenderwochen aufs jahr verteilt. leider bin ich noch ein anfänger und zu wenig verständnis für folgendes problem: die datensätze werden auf ihr datum geprüft und dann nach KW in ein anderes arbeitsblatt kopiert. ich habe nun pro kalenderwoche ein for-next-loop geschrieben, was zu einer riesigen prozedur führt (53 loops)... dazu kommt, dass ich eine statusleiste eingebaut habe, sodass man den fortschritt sieht. die ausführung dauert nun ca. 50min... wie kann ich das schlanker gestalten?
'KW 1
With Worksheets("Daten") 'Tabelle der zu verarbeitenden Daten
SW = .UsedRange.Rows.Count
n = 1
Länge = 0
Schritt = PB1.Label1.Width / SW
For row = 2 To SW 'ab Zeile 2 bis zur letzten prüfen ob
If Worksheets("Daten").Cells(row, 4).Value >= Worksheets("DropDown").Range("C2") And Worksheets("Daten").Cells(row, 4).Value Worksheets("Daten").Range("A" & row & ":F" & row).Copy 'falls ja, Zeile kopieren
Worksheets("KW 1-53").Cells(2 + n, 1).PasteSpecial xlPasteValues ' und in Tabelle "KW 1-53" kopieren (KW1= spalte 1, KW2= spalte 9, KW3 = spalte 17 etc.)
Länge = Länge + Schritt 'Fortschritt des Balkens neu definieren
PB1.Label2.Width = Länge
PB1.Label3.Caption = Format(row / SW, "0 %") 'Beschriftung Statusbalken
n = n + 1 'nächste Zeile prüfen
End If
Next row
End With
'KW 2...
'KW 3...
'KW 4...
'KW 53