Makro umschreiben
02.12.2016 11:52:07
John
ich würde gerne ein bereits funktionierendes Makro überarbeiten damit es schneller wie bisher (2 Stunden) durchläuft...
Er springt bei dem unten geposteten Teilauszug des Makros von Tabellenblatt "Saldovortrag" zu Tabellenblatt "Anfangsbestand"...
immer und immer wieder. Hin und her. Für ca. 12.000 Zeilen (also 12.000 x 5 Zellenwerte = 60.000 mal)...
Ich vermute, dass dies der Grund ist, warum das Makro so lange läuft.
Kann man diesen Part insoweit abändern, dass er nur 1x zu Tabellenblatt "Saldovortrag" springt, sich die 5 Werte merkt und dann bei Tabellenblatt "Anfangsbestand" einfügt? Oder wird das schwierig, weil hier u.a. eine Subtraktion stattfindet (z.B. hier Workbooks(makrodatei).Sheets("Anfangsbestand").Cells(zeileAB, 20) = Workbooks(makrodatei).Sheets("Anfangsbestand").Cells(zeileAB, 19) - Workbooks(makrodatei).Sheets("Anfangsbestand").Cells(zeileAB, 5) )
Hier der Ausschnitt:
Function AbgleichAnfangsbestand()
zeileAB = 2
makrodatei = ActiveWorkbook.Name
LetzteZeile = Workbooks(makrodatei).Sheets("Anfangsbestand").Cells(Rows.Count, 1).End(xlUp).Row
Do Until zeileAB > LetzteZeile
zeileSV = 2
Do Until Workbooks(makrodatei).Sheets("Saldovortrag").Cells(zeileSV, 1) = ""
If Workbooks(makrodatei).Sheets("Saldovortrag").Cells(zeileSV, 9) = Workbooks( _
makrodatei).Sheets("Anfangsbestand").Cells(zeileAB, 18) Then
Workbooks(makrodatei).Sheets("Anfangsbestand").Cells(zeileAB, 19) = Workbooks( _
makrodatei).Sheets("Saldovortrag").Cells(zeileSV, 4)
Workbooks(makrodatei).Sheets("Anfangsbestand").Cells(zeileAB, 20) = Workbooks( _
makrodatei).Sheets("Anfangsbestand").Cells(zeileAB, 19) - Workbooks(makrodatei).Sheets("Anfangsbestand").Cells(zeileAB, 5)
Workbooks(makrodatei).Sheets("Anfangsbestand").Cells(zeileAB, 21) = Workbooks( _
makrodatei).Sheets("Saldovortrag").Cells(zeileSV, 8)
Workbooks(makrodatei).Sheets("Anfangsbestand").Cells(zeileAB, 22) = Workbooks( _
makrodatei).Sheets("Anfangsbestand").Cells(zeileAB, 21) - Workbooks(makrodatei).Sheets("Anfangsbestand").Cells(zeileAB, 16)
Workbooks(makrodatei).Sheets("Anfangsbestand").Cells(zeileAB, 23) = Workbooks( _
makrodatei).Sheets("Anfangsbestand").Cells(zeileAB, 15) - Workbooks(makrodatei).Sheets("Anfangsbestand").Cells(zeileAB, 16)
End If
zeileSV = zeileSV + 1
Loop
zeileAB = zeileAB + 1
Loop
End Function
Ich bitte um Unterstützung... da meine Kenntnisse bislang noch nicht so fortgeschritten sind ;)
Vielen Dank.
Gruß
John