Copy, Paste mit ignorieren von leeren Zellen

  • Excel

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von peterfido.

    Copy, Paste mit ignorieren von leeren Zellen

    Hallo,

    Habe mich soeben registriert weil ich ein Problem mit meinem VBA Code habe.

    Ich möchte Daten aus einer Datei per Schaltfläche in eine andere Datei kopieren, dabei sollen leere Zellen nicht mit kopiert werden. Die kopierten Daten soll in der neuen Datei untereinander angefügt werden.

    Visual Basic-Quellcode

    1. Private Sub CommandButton2_Click()
    2. Call Ausgabe
    3. End Sub
    4. Public Sub Ausgabe()
    5. 'Öffnen
    6. Workbooks.Open Filename:="G:\CAS\Clausen\NEU\Ausgabe.xlsx"
    7. 'Kopieren (Werte statisch einfügen)
    8. ThisWorkbook.Sheets("Transfer").Range(Cells(2, 1), Cells(99, 10)).Copy
    9. Workbooks("Ausgabe.xlsx").Sheets("Tabelle1").Range("A9999").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues
    10. Application.CutCopyMode = False
    11. 'Speichern + Schließen
    12. Workbooks("Ausgabe.xlsx").Close True
    13. End Sub


    Jetzt brauche ich noch eine Schleife die die Zellen prüft und nur diese kopiert. Kriege es aber nicht hin :( Wäre super wenn mir jemand helfen könnte :)

    Danke!

    Edit by Manschula: Thema aus dem Hauptforum verschoben

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

    Habe noch etwas weiter gebastelt aber ich bekomme immer den Fehler " Index außerhalb des Bereichs" :(

    Visual Basic-Quellcode

    1. Private Sub CommandButton2_Click()
    2. Call Ausgabe
    3. End Sub
    4. Sub Ausgabe()
    5. Application.ScreenUpdating = False
    6. Workbooks.Open Filename:="G:\CAS\Clausen\NEU\Ausgabe.xlsx"
    7. With Sheets("Transfer")
    8. .Rows("2:99").AutoFilter Field:=1, Criteria1:="<>" ' autofilter in SpalteA nach ungleich leer
    9. .Rows("2:99").SpecialCells(xlCellTypeVisible).Copy
    10. Workbooks("Ausgabe.xlsx").Sheets("Tabelle1").Range("A9999").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues
    11. .Rows("2:99").AutoFilter 'autofilter entfernen
    12. Application.CutCopyMode = False
    13. End With
    14. Workbooks("Ausgabe.xlsx").Close True
    15. Application.ScreenUpdating = True
    16. End Sub
    .Range("A9999") dürfte keine Probleme machen, insbesondere, da es durch .End(xlUp) nach oben gerechnet wird.

    Bei welcher Zeile meldet er den Fehler?

    Bist du sicher, dass du den Filter in Zeile 2 setzen möchtest?
    .Rows("2:99").Autofilter setzt den Header in Zeile 2 voraus!
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Wenn Du Screenupdating = false setzt, sollten sich die Sichtbarkeiten auch beim Autofilter nicht ändern. Du hast aber vor nur die sichtbaren Zeilen zu kopieren.
    Mehrere Möglichkeiten ziehe ich in Betracht.
    a) probieren, ob es ohne Screenupdating=false fehlerfrei läuft
    b) "zu Fuß" nur belegte Zellen kopieren
    c) alles Kopieren und im Ziel die leeren Zeilen wieder entfernen.
    d) dafür fehlen mir weitere Infos über den Inhalt der Zellen...
    Gruß
    Peterfido

    Keine Unterstützung per PN!