Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Zelle löschen wenn leer mit nachrückendem Inhalt - Fehlermeldung #NV
#1
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
Antworten Top
#2
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
Antworten Top
#3
... zu spät, Uwe war schneller;darum gelöscht (muss ja nich alles doppelt gemoppelt sein ...)
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Antworten Top
#4
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?
Antworten Top
#5
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
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste