in eine Tabelle füge ich eine Leerzeile ein, wenn ab der Startzeile in der Spalte L (mit Zahlen) die Zahl gleich oder größer ist, als die Zahl in der Folgezeile. In der Tabelle existieren bei Beginn ab der Startzeile keine Leerzeilen. Diese Prozedur funktioniert auch wie gewünscht, wenn es auch einige Sekunden dauert. Leider steigt die Ablaufdauer auf über eine Minute, je häufiger ich untenstehende Prozedur aufrufe:
Sub Leerzeilen_einfügen_01()
Dim altPl As String
Dim anzLZ As Long
Dim letzteZeile As Long
Dim neuNam As String
Dim startZeile As Long
Dim ws As Worksheet
Dim zeile As Long
startZeile = 9
anzLZ = 1
Set ws = ActiveSheet
altPl = ws.Cells(startZeile, "L")
zeile = startZeile
Do Until IsEmpty(ws.Cells(zeile, "L"))
neuPl = ws.Cells(zeile, "L")
If neuPl = altPl Then
ws.Rows(zeile).Resize(anzLZ).Insert
zeile = zeile + anzLZ
altPl = neuPl
End If
zeile = zeile + 1
Loop
Set ws = Nothing
End Sub
Ich muss erwähnen, dass diese Prozedur innerhalb einer übergeordneten umfangreichen Prozedur über eine Call-Anweisung aufgerufen wird. Wenn ich diese Call-Anweisung "abschalte", dann läuft diese Prozedur wunschgemäß in ca. 1 Sekunde ab.
Das gleiche Problem tritt bei der folgenden Prozedur auf:
Sub Leerzeilen_Einfügen_02()
Dim Zei As Long
For Zei = Cells(Rows.Count, 2).End(xlUp).Row To 9 Step -1
If Cells(Zei, 12).Value = Cells(Zei - 1, 12).Value Then
Rows(Zei & ":" & Zei).Insert
End If
Next Zei
End Sub
Hat jemand eine Idee, warum das so ist und wie ich die Prozedur gestalten muss, damit die Ablaufzeit wieder auf "Normal" fällt?
Viele Grüße
Franz