Langsames Makro beschleunigen
03.04.2020 08:34:04
Mayerhofer
mein Makro quält mich nun schon seit Tagen. Es ist einfach MEGA LANGSAM. Ich habe mich durch die einschlägigen Beiträge gelesen und diverse Anpassungen vorgenommen - aber die Performance ist bescheiden. Wäre klasse, wenn ihr mir helfen würdet.
Zum Makro: Es soll auf Basis von drei Selektionskriterien Zeile für Zeile durchgehen und bei einem Match eine Zeile duplizieren und an diversen Stellen (Zellen) Änderungen / Einträge vornehmen.
So sieht das aktuell aus:
Sub RUESTEN_separieren_Tabellenblatt()
Dim zeile As Integer
Dim rueckmeldeart As String
zeile = ActiveCell.Row
rueckmeldeart = ""
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Do Until zeile = 6000 Or Range("A" & zeile).Value = "" And Range("I" & zeile).Value = ""
If ActiveCell.Offset(0, 10).Value = "Arbeit" And ActiveCell.Offset(0, 12).Value "" And _
_
_
ActiveCell.Offset(0, 14).Value "" Then
Rows(zeile).Select
Selection.Copy
Selection.Insert Shift:=xlDown
ActiveCell.EntireRow.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveCell.Activate
ActiveCell.Offset(0, 6).Value = "AFO0001"
ActiveCell.Offset(0, 7).Value = "Rüsten"
ActiveCell.Offset(0, 12).Value = ""
ActiveCell.Offset(0, 15).Value = ""
ActiveCell.Offset(0, 16).Value = "nach Maschinen- und Einstellblatt"
ActiveCell.Offset(1, 14).Value = ""
rueckmeldeart = ActiveCell.Offset(1, 20).Value
ActiveCell.Offset(0, 20).Value = rueckmeldeart
ActiveCell.Offset(0, 22).Value = "A1"
ActiveCell.Offset(1, 22).Value = "A2"
Else
ActiveCell.Offset(1, 0).Select
End If
Range("A" & zeile).Activate
zeile = zeile + 1
ActiveCell.Offset(1, 0).Select
Loop
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Call Calculate
End Sub
Die Zeilensuche funktioniert ganz ordentlich hinsichtlich Geschwindigkeit - nur die Zeilenbearbeitung... Die wird von Zeile für Zeile langsamer.
Für eure Rückmeldungen - schon mal herzlichen Dank