Clever-Excel-Forum

Normale Version: Zelle löschen wenn leer mit nachrückendem Inhalt - Fehlermeldung #NV
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebe Freunde,

ich habe folgendes Problem mit meinem Code. Wenn eine Zelle in Spalte 2 leer ist, möchte ich diese Zelle löschen, wobei die darunter stehenden Inhalte nachrücken sollen. So weit so gut.
Warum erscheint bei meinem Code ganz unten immer #NV und wie bekomme ich das weg?


Code:
Sub ZelleLöschenB()
Dim vbSpalte2 As Variant
If Cells(ActiveCell.Row, 2) = "" Then
vbSpalte2 = Range("B" & ActiveCell.Row + 1 & ":B" & Cells(Rows.Count, 2).End(xlUp).Row)
Range("B" & ActiveCell.Row & ":B" & Cells(Rows.Count, 2).End(xlUp).Row) = vbSpalte2
End If
End Sub
Hallo Algor,

das liegt daran, dass vbSpalte2 eine Zeile weniger ist als der Bereich, auf den zurückgeschrieben werden soll.
So sollte es gehen:

vbSpalte2 = Range("B" & ActiveCell.Row + 1 & ":B" & Cells(Rows.Count, 2).End(xlUp).Row + 1)

Aber für diesen konkreten Fall würde auch das genügen:
Sub ZelleLöschenB()
If Cells(ActiveCell.Row, 2) = "" Then
Cells(ActiveCell.Row, 2).Delete Shift:=xlUp
End If
End Sub
Gruß Uwe
... zu spät, Uwe war schneller;darum gelöscht (muss ja nich alles doppelt gemoppelt sein ...)
Hallo Uwe,

genau das war es. Danke. Habe noch mal eine Frage. Ich schreibe den Inhalt deshalb in vbSpalte2, weil unterhalb der
zu löschenden Zeile sehr sehr viele Zellen mit Inhalt stehen. Statt leere Zelle löschen habe ich auch den entsprechenden
Code dafür geschrieben eine leere Zelle einzufügen. Wenn man mit großen Datenmengen auf dem Tabellenblatt arbeitet
habe ich festgestellt, dass der Einsatz von Feldern am besten funktioniert. Gibt es Alternativen?
Hallo Algor,

Du hast mit der Verwendung einer Feldvariablen schon die schnellste Variante.
Es gibt keinen Grund, eine andere zu benutzen. Meine "Alternative" ist zwar kürzer, aber langsamer. Smile

Gruß Uwe