Schleife VBA Leerzeile einfügen wenn Bedingung erfüllt, was mache ich falsch?

2 Antworten

Was macht denn der Befehl Rows.Select? Der kommt mir überflüssig vor, weil dort nicht steht, auf welche Zeile er sich bezieht.

Ins Blaue geraten: Gibt es einen Befehl der Art: Cells(i, 9).Row.Select?

Du solltest außerdem nach dem Einfügen einer neuen Zeile i um 1 zurücksetzen.

Hi,

der unten stehende Code sollte das machen was Du willst. Zudem sparst Du Dir das "Select". Wenn die Zeile unterhalb der Zeile mit dem "nein" eingefügt werden soll. einfach das " Rows(i).Insert ..." duch " "Rows(i+1).Insert ..." ersetzen.

Das Problem an Deinem Code war, dass nicht klar war welche Reile ausgewählt erden sollte. Der Code würde mit "Rows(i).Select" statt "Rows.Select" funktionieren. Man sollte sich select aber wenn immer möglich sparen. Bei ein paar Zeilen in denen "nein" steht wird das in der Laufzeit nicht viel machen, aber wenn die Tabelle wirklich lang ist ist der Code den ich unten gepostet habe deutlich effektiver.

Sub schleife()
For i = 1 To 65536
         If Cells(i, 9) = "nein" Then
         Rows(i).Insert Shift:=xlDown
     End If
    Next i
End Sub