Schleife VBA Leerzeile einfügen wenn Bedingung erfüllt, was mache ich falsch?
Hi,
ich möchte ein makro schreiben und die schleife funktioniert bei mir nicht. Ich möchte, wenn in Spalte I das Wort "nein" steht, das er in dieser Zeile eine Leerzeile einfügt.
For i = 1 To 65536
If Cells(i, 9) = "nein" Then
Rows.Select
Selection.Insert Shift:=xlDown
End If
Next i
Was mache ich falsch?
Lieben Dank!!!
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