Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

For-Next-Loop

Forumthread: For-Next-Loop

For-Next-Loop
07.07.2022 10:38:48
daniel
hallo zusammen
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
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: For-Next-Loop
07.07.2022 11:04:46
ralf_b
du kannst das screenupdating und die calulation abschalten. Und die Datenbereiche erst in einer Union sammeln und dann gesamt übertragen. Oder die Bearbeitung in Arrays auslagern. Das ist alles super recherchierbar. https://stackoverflow.com/questions/47089741/how-to-speed-up-vba-code
Anzeige
AW: For-Next-Loop
07.07.2022 13:07:54
daniel
danke für deine antwort. habe mal screenUpdating, enableEvents, Calculation etc. angepasst. läuft nun minimal schneller. wie kann ich meine datenmenge in einen array auslagern ohne den gesamten code nochmals neu schreiben zu müssen? hab an verschiedenen orten gelesen das sei mittels einer einzigen codierzeile möglich...?
Anzeige
AW: For-Next-Loop
07.07.2022 14:07:21
onur
Dann poste mal eine (Beispiels-) Datei. Wie soll man einen schnelleren Code schreiben, wen man die ZUGEHÖRIGE Datei nicht hat?
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige