VBA Code: Zeilen mit Inhalt "leer" löschen?
Hallo an Alle,
kurz zur Erklärung: Ich füge Daten (immer 4 Zeilen) in eine "Datenbank" ein, allerdings, wenn nicht alles ausgefüllt wird, erscheint als Platzhalter "leer". Diese möchte ich gleich im Anschluss löschen, dass es keine weiteren Formeln durcheinander bringt bzw. weil er mir dann bei der nächsten Suche von einer leeren Zeile immer unterhalb der 4 Zeilen springt (wenn ich nicht mit "leer" fülle). :(
Ich habe jetzt schon mehreres probiert, aber entweder es löscht mir die Zeilen nicht oder es löscht auch Zeilen die eingefügt bleiben sollen... Bitte um fachmännische Hilfe. Bitte, DANKE!
Gerne umgehe ich auch "leer", wenn ich dann zumindest wirklich immer in der letzten freien Zeile bin...
Hier der momentan Code:
Range("N3:AE6").Select
Selection.Copy
Sheets("Datenbank").Select
Range("A520").Select
Cells(65000, 1).End(xlUp).Offset(1, 0).Select
Dim last As Integer
last = Cells(Rows.Count, 1).End(xlUp).Row + 1
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
If Cells(last).Value = "leer" Then
Rows(last).Delete Shift:=xlUp
End If
Sheets("BestandsKunde").Select
Range("H43").Select
End Sub
Lg, B
2 Antworten
Ich verstehe nicht so genau was Du genau machst. Ich sehe keine Notwendigkeit, dass leer überhaupt eingetragen wird, aber so sei es.
Die Übertragung von einer Stelle auf der anderen sollte nicht mit Copy/Paste erfolgen.
das kann man auch mit Variablen lösen bzw. mit einer Schleife, die alle Zellen einzeln durchforstet und überträgt. Sollte in einer Zelle "leer" stehen, überspringst Du den Schritt.
Ich weiß das es nicht sein muss, deshalb habe ich auch hinzugefügt, dass ich auch für Lösungen unabhängig davon dankbar bin. Nur nach weiteren Stunden am Schreiben und ändern bin ich trotzdem noch nicht weiter. Trotz Versuch mit Variablen und Schleifen - es macht nie das was ich möchte.
Ich will, um es nochmal explizit zu formulieren, aus "Bestandskunden" 1-4 Zeilen (je nach Eintrag) in die Datenbank "kopieren" (wenn korrekt befüllt und nicht "leer" - sind allerdings überall Formeln hinterlegt...).
Für eine andere Formel, benötige ich den letzten Wert aus einer Spalte, daher sollte es immer korrekt übertragen werden und keine "leeren" Zeilen haben....
Oder: wenn in "BestandsKunde" in N3:AE6 die Formel einen Wert ausspuckt soll es in die "Datenbank" übernommen werden, wenn kein Wert ausgespuckt wird, dann halt nicht...
Zeilen löschen beginnt man besser von unten. Den Code auf deine Blattnamen und Spalten anpassen. Diesen Code komplett separat nach dem Kopier Vorgang anwenden. (Mit einer automatisierten Filterung + Löschen ginge es schneller)
Dim last As Integer
last = Cells(Rows.Count, 1).End(xlUp).Row + 1
Do while WorksheetFunction.CountIf(Tabelle1.Range("A1:A" & last), "leer") > 1
If Tabelle1.Range("A" & last).Value = "leer" then
Tabelle1.Rows(last).Delete
else
last = last -1
end if
loop