Autofilter kopieren, bei leerer Zelle wird abgebrochen

  • Excel

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Nadine.Uhlig.

    Autofilter kopieren, bei leerer Zelle wird abgebrochen

    Guten Tag,

    meine VBA Kenntnisse sind nicht sehr gut. Bis jetzt habe ich es aber immer irgendwie geschafft meine Knöpfe zum laufen zu bringen. Jetzt klappt es leider trotz intensiven Googlen nicht.

    Ich habe einen Button, der eigentlich ganz simpel die gefilterten Daten in eine andere Tabelle kopieren soll. Das hat immer super geklappt. Jetzt das große ABER
    Sobald ich einen Filter setze, der auch leere Zellen enthält, werden nur die Zeilen darüber kopiert. Er bricht einfach ab. Am einfachsten wäre es vermutlich eine Art Schleife einzubauen, die sagt solange in meiner Spalte AI (hier ist eine ID drin, die immer befüllt ist) was steht, weiter kopieren... Ich hab nen Knoten im Kopf oder denke vielleicht in die falsche Richtung.

    Wie gesagt, Programmiererfahrung ist in den Kinderschuhen, ich habe es mir stellenweise (zB beim löschen der Liste) sehr leicht gemacht.
    Ich wäre sehr dankbar für Hilfe und einen Denkanstoß.
    Lieben Dank an jeden, der sich die Mühe macht sich den Code anzuschauen.

    Hier der Code:

    Visual Basic-Quellcode

    1. Sub Schaltfläche2_KlickenSieAuf()
    2. 'in Serienbrief-kopieren-Button
    3. If MsgBox("Soll die Tabelle 'Serienbrief' überschrieben werden?", vbYesNo) = vbYes Then
    4. Dim lngFilterRow As Long, lngFilterColumn As Long
    5. Dim lngFilter As Long
    6. 'Zeilenanzahl für die spätere Ausgabe
    7. Dim Zeilenanzahl As Long
    8. With Worksheets("EKH2 2019")
    9. If .AutoFilterMode Then
    10. If .FilterMode Then
    11. With .AutoFilter
    12. lngFilterRow = .Range.Row
    13. lngFilterColumn = .Range.Column
    14. With .Filters
    15. For lngFilter = 1 To .Count
    16. If .Item(lngFilter).On Then Exit For
    17. Next
    18. End With
    19. End With
    20. 'Serienbrief bis Zeile 500 löschen
    21. Worksheets("Serienbrief").Range("a2:ai500").EntireRow.Delete
    22. 'Einfügen
    23. .Range(.Range(.Cells(lngFilterRow + 1, lngFilterColumn), _
    24. .Cells(lngFilterRow + 1, _
    25. lngFilterColumn + .AutoFilter.Filters.Count - 1)), _
    26. .Cells(lngFilterRow, lngFilter).End(xlDown)).Copy _
    27. Worksheets("Serienbrief").Range("A2")
    28. Zeilenanzahl = Worksheets("Serienbrief").Range("A65536").End(xlUp).Row - 1
    29. MsgBox "Es wurden " & Zeilenanzahl & " Datensätze kopiert"
    30. Else
    31. If MsgBox "Es ist kein Filter gesetzt"
    32. End If
    33. End If
    34. Else
    35. MsgBox "Kein Autofilter in der Tabelle.", 48, "Hinweis"
    36. End If
    37. End With
    38. Else
    39. Exit Sub
    40. End If
    41. End Sub


    CodeTags gesetzt, bitte in Zukunft selber setzen. ~VaporiZed

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    Nadine.Uhlig schrieb:

    Sobald ich einen Filter setze, der auch leere Zellen enthält, werden nur die Zeilen darüber kopiert
    Das liegt an dem End(xlDown) in

    Visual Basic-Quellcode

    1. Cells(lngFilterRow, lngFilter).End(xlDown)).Copy _
    Das geht nur bis zum Ende der Region, also z.B. bis eine leere Zelle kommt.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --