Hallo Kolie,
Beim Zeilen einfügen oder löschen ist wie beim Bodenwischen: immer zurück zu Tür, sonst tritt man rein.
In Programmier-Version heisst es vom letzter Zeile zu erster, weil sonst musst Du diese "i = i + zeilenanzahl" managen, und dass sollte man eben nicht tun, weil das "For"-Increment durcheinander kommen kann.
Sub Kopieren()
Dim ZeilenAnzahl As Long
Dim i As Long
For i = Wert To startZeile Step -1
'If Cells(i, 1) = "" Then Exit For ' nicht mehr notwendig
ZeilenAnzahl = cLng(Cells(i, 9)) 'wenn Cells(i,1) = "" kann man davon ausgehen, dass Cells(i,9)=0
If ZeilenAnzahl > 0 Then 'Absprung vermeiden
Rows(i).EntireRow.Copy
Cells(i + 1, 1).Resize(ZeilenAnzahl, 1).EntireRow.Insert Shift:=xlDown
Application.CutCopyMode = False
Cells(i + 1, 19).Resize(ZeilenAnzahl, 1).ClearContents 'Bereinigung der Doppelten Hauptanlagen Bezeichnungen
End If
Next i
End Sub
VG
Yal
|