Hi Leute,
ich hab ein kleines Makro geschrieben, bei dem ich um 2 for-Schleifen nicht rum komm. Nun ist es so, dass ab 100000 Datensätze das Programm rund 2h laufen würde. Momentan hab ich erst rund 800 Datensätze, aber die 100000er-Marke wird mit Sicherheit durchbrochen werden! Nun meine Frage an euch: Wie kann ich den Code schneller machen?!?!? Hier mal mein Code, allerdings nur der Ausschnitt, der für diese Laufzeit verantwortlich ist!:
ich hab ein kleines Makro geschrieben, bei dem ich um 2 for-Schleifen nicht rum komm. Nun ist es so, dass ab 100000 Datensätze das Programm rund 2h laufen würde. Momentan hab ich erst rund 800 Datensätze, aber die 100000er-Marke wird mit Sicherheit durchbrochen werden! Nun meine Frage an euch: Wie kann ich den Code schneller machen?!?!? Hier mal mein Code, allerdings nur der Ausschnitt, der für diese Laufzeit verantwortlich ist!:
Visual Basic-Quellcode
- lineCounter = 2
- ProjectID_alt = "" 'ProjectID_alt mit Startwert beschreiben
- For i = 2 To lastRow
- Forms!frmprogress!progressBar0.value = i * lastRow 'Start des Fortschrittbalkens
- 'Wenn Bewertung gelöscht wurde, ist Feld mit Angabe über Größe des Projekts leer
- If xwsin.Cells(i, 19) = "" Then
- ProjectID = xwsin.Cells(i, 4) 'ProjektID (= DG-Nummer) von Excel-Sheet in Variable speichern
- ProjectManager = xwsin.Cells(i, 2)
- For j = 2 To lastRow
- 'Jede ProjectID mit jeder ProjectID vergleichen
- If ProjectID = xwsin.Cells(j, 4) Then
- 'Wenn aktuelle ProjectID und ProjectID_alt unterschiedlich sind,
- 'dann aktuelle ProjectID und ProjectManager in neue Zeile schreiben
- If ProjectID <> ProjectID_alt Then
- ProjectID_alt = ProjectID
- xwsout.Cells(lineCounter, 1) = ProjectID 'ProjectID in Excel-Sheet schreiben
- xwsout.Cells(lineCounter, 2) = ProjectManager 'ProjectManager in Excel-Sheet schreiben
- lineCounter = lineCounter + 1 'Zeile von PMCompared_filled inkrementieren
- Else
- xwsout.Cells(lineCounter - 1, 4) = ProjectID_alt
- xwsout.Cells(lineCounter - 1, 5) = xwsin.Cells(j, 2)
- End If
- End If
- Next j
- End If
- Next i