Microsoft Excel

Herbers Excel/VBA-Archiv

Zeile mit leerer Zelle kopieren

Betrifft: Zeile mit leerer Zelle kopieren von: Blume
Geschrieben am: 13.10.2020 14:47:50

Hallo zusammen,


ich habe eine Frage: In Spalte A sind manchmal leere Zellen. Wenn diese Zelle leer ist, dann soll es die ganze Zeile in das Tabellenblatt "Backup" an das Ende hinzufügen. Das Gilt aber wirklich nur für die Zellen, bei denen Die Zelle in Spalte A leer ist. Am besten wäre es, es würde es dann automatisch nach dem Datum in Spalte B sortieren.

Kann mir jemand helfen?

Betrifft: AW: Zeile mit leerer Zelle kopieren
von: Hajo_Zi
Geschrieben am: 13.10.2020 17:58:35

Benutze Autofilter und Kopiere den sichtbaren Bereich, Start, Bearbeiten, Suchen..., Gehe zu, Inhalte, sichtbare Zellen.
Excel hat auch einen Makrorecorder.

GrußformelHomepage

Betrifft: Frage...
von: Werner
Geschrieben am: 13.10.2020 18:09:35

Hallo,

da stellen sich zwei Fragen:

1. Sind die Zellen in Spalte A tatsächlich leer oder ist da ggf. ein Formel drin die leer ausgibt?

2. Bis zu welcher Spalte in der Quelltabelle geht dein Datenbereich?

Gruß Werner

Betrifft: AW: Frage...
von: Blume
Geschrieben am: 13.10.2020 20:11:06

Hallo Werner,

die Zellen in Spalte A sind wenn dann tatsächlich leer.
Es geht bis zu Spalte Z.

Der Hintergrund ist der, dass die Zeile als Backup in das andere worksheet kopiert werden soll und dann aus der originaltabelle gelöscht werden soll.

Betrifft: AW: Frage...
von: Werner
Geschrieben am: 13.10.2020 22:03:56

Hallo,
Option Explicit

Public Sub Leere_Kopieren()
Dim loLetzteQ As Long, loLetzteZ As Long

Application.ScreenUpdating = False

With Worksheets("Tabelle1")
    loLetzteQ = .Cells(.Rows.Count, "B").End(xlUp).Row
    On Error Resume Next
    .Range(.Cells(1, "A"), .Cells(loLetzteQ, "A")).SpecialCells(xlCellTypeBlanks).EntireRow. _
Copy
    If Err.Number = 1004 Then Exit Sub
    With Worksheets("Backup")
        loLetzteZ = .Cells(.Rows.Count, "B").End(xlUp).Offset(1).Row
        If .Cells(1, "B") = "" Then loLetzteZ = 1
        .Cells(loLetzteZ, "A").PasteSpecial Paste:=xlPasteValues
        loLetzteZ = .Cells(.Rows.Count, "B").End(xlUp).Row
        .Range(.Cells(1, "B"), .Cells(loLetzteZ, "Z")).Sort Key1:=.Range("B1"), Order1:= _
xlAscending, _
         Header:=xlNo, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
    End With
    .Range(.Cells(1, "A"), .Cells(loLetzteQ, "A")).SpecialCells(xlCellTypeBlanks).EntireRow. _
Delete
End With

End Sub
Gruß Werner

Betrifft: AW: Frage...
von: Blume
Geschrieben am: 14.10.2020 07:59:24

Hallo Werner,

es funktioniert, wenn ich es mit wenigen Zeilen probiere. Allerdings kopiert und löscht es die Zeilen ab Zeile (ca. 20) nicht mehr. Woran kann das liegen?
In dem Dokument sind immer mal wieder leere Zellen in dieser Spalte A. Mal in Zeile 2,mal 4, 80 es müsste die komplette Spalte durchlaufen.

Betrifft: AW: Frage...
von: Werner
Geschrieben am: 14.10.2020 09:09:56

Hallo,

keine Ahnung. Bei mir tut das Makro das, was es tun soll. Deine Datei kenne ich nicht.

Kann es sein, dass deine Spalte B ab Zeile 20 leer ist?
In Spalte B wird im Makro die letzte belegte Zeile ermittelt.
Sollte die Spalte B ab Zeile 20 leer sein, dann geht der "Löschbereich" Spalte A auch nur bis Zeile 20.

Gruß Werner

Betrifft: AW: Frage...
von: Blume
Geschrieben am: 14.10.2020 13:03:00

Hallo Werner,

ja, bei mir funktioniert es auch im oberen Bereich. Spalte B ist bei mir immer gefüllt, daran sollte es nicht liegen.

Betrifft: AW: Frage...
von: Blume
Geschrieben am: 14.10.2020 13:03:02

Hallo Werner,

ja, bei mir funktioniert es auch im oberen Bereich. Spalte B ist bei mir immer gefüllt, daran sollte es nicht liegen.

Betrifft: AW: Frage...
von: Blume
Geschrieben am: 14.10.2020 13:04:55

Ich habe es getestet, in der Zelle ist kein Wert, keine Formel, nichts. Trotzdem funktioniert das Makro nur vollständig, wenn man z.B. vorher einen Wert aus der Zelle in Spalte A löscht.

Betrifft: AW: Frage...
von: Blume
Geschrieben am: 14.10.2020 15:35:41

Ich habe es getestet, in der Zelle ist kein Wert, keine Formel, nichts. Trotzdem funktioniert das Makro nur vollständig, wenn man z.B. vorher einen Wert aus der Zelle in Spalte A löscht.

Betrifft: AW: Frage...
von: Werner
Geschrieben am: 14.10.2020 18:43:36

Hallo,

und damit soll ich jetzt was anfangen?

Lad mal deine Mappe hoch. Ich denke, dass die Zellen in Spalte A nicht wirklich leer sind.

Wie kommen denn die Daten da hin?

Gruß Werner

Betrifft: AW: SpecialCells..
von: Gerd L
Geschrieben am: 15.10.2020 13:52:24

Hallo,

lass mal diese Codezeile vorweg laufen:

Columns(1).Value = Columns(1).Value

Die Specialcells-Methode hat ein Problem mit nicht genutzten Zellen bzw. solchen außerhalb des
benutzten Bereichs (UsedRange). Dafür spricht auch deine Feststellung.

Gruß Gerd

Betrifft: AW: SpecialCells..
von: Blume
Geschrieben am: 19.10.2020 08:05:14

Hallo Gerd,

ja, daran lag es! Vielen Dank für Hilfe, jetzt funktioniert es komplett.
Herzlichen Dank!