Microsoft Excel

Herbers Excel/VBA-Archiv

Daten in anderes Tabellenblatt kopieren

Betrifft: Daten in anderes Tabellenblatt kopieren von: harti
Geschrieben am: 09.10.2020 20:46:35

Hallo Excel-Gemeinde,

ich benötige einmal Eure Hilfe bei einer Aufgabe die ich im Dienst erledigen muss.
Mit dem Macrorekorder kann ich 90% der (einfachen) Aufgabe erledigen...allerdings sind da noch die fehlenden 10% bei denen ich wirklich nicht weiterkomme.

Vielleicht kann mir hier einer von Euch weiterhelfen.

Also...es gibt eine Datei mit zwei Tabellenblättern. Die Blätter heißen aktuell und archiv.

Im Blatt aktuell werden im laufenden Jahr Daten eingetragen. Ab Zeile 11 und von Spalte A bis Spalte N.
Im Jahr kommen so vielleicht 300 - 500 Zeilen an Daten zusammen. Vielleicht auch etwas mehr oder etwas weniger.
Anfang des nächsten Jahres sollen alle Zeilen mit einem Makro in das Blatt archiv kopiert werden.
Nur die Werte und die Formate. Anschließend sollen die Zeilen in Blatt aktuell gelöscht werden, so dass das Blatt im neuen Jahr wieder genutzt werden kann.
Dies ist ja eigentlich ganz einfach mit dem Makrorekorder hinzubekommen.
Und nun kommen die mir fehlenden 10% :-)

Natürlich soll das Makro im Blatt Archiv die reinzukopierenden Daten ab der ersten freien Zeile einfügen. Bei der ersten Benutzung wäre dies natürlich Zeile 11. Beim nächsten Mal wäre die nächste freie Zeile vielleicht die 478.
Es sollen also die bereits im Archiv befindlichen Datensätze nicht überschrieben werden, sondern die neuen werden angefügt.

Und da fällt mir wirklich nichts ein....

Weiß da jemand einen Rat...oder hat gar eine Lösung?

Danke schon einmal...
tobi

https://www.herber.de/bbs/user/140772.xlsm

Betrifft: AW: Daten in anderes Tabellenblatt kopieren
von: Werner
Geschrieben am: 09.10.2020 21:18:49

Hallo,
Public Sub Archivierung()
Dim loLetzteQuelle As Long, loLetzteZiel As Long

Application.ScreenUpdating = False

With Worksheets("aktuell")
    loLetzteQuelle = .Cells(.Rows.Count, "A").End(xlUp).Row
    .Range(.Cells(11, "A"), .Cells(loLetzteQuelle, "N")).Copy
    With Worksheets("archiv")
        loLetzteZiel = .Cells(.Rows.Count, "A").End(xlUp).Offset(1).Row
        If loLetzteZiel < 11 Then loLetzteZiel = 11
        .Cells(loLetzteZiel, "A").PasteSpecial Paste:=xlPasteValues
        .Cells(loLetzteZiel, "A").PasteSpecial Paste:=xlPasteFormats
    End With
    .Range(.Cells(11, "A"), .Cells(loLetzteQuelle, "N")).ClearContents
End With

Application.CutCopyMode = False
End Sub
Gruß Werner

Betrifft: AW: Daten in anderes Tabellenblatt kopieren
von: harti
Geschrieben am: 09.10.2020 21:29:45

Hallo Werner,

einfach nur perfekt.
Dein Makro macht genau was ich suche. Vielen, vielen Dank.

Ich habe nur einen klitzekleinen Änderungswunsch.

Was muss am Makro geändert werden damit nach Ausführung nicht die neuen hinzugefügten Zellen markiert sind. Und eventuell zurück in das leere Blatt aktuell gesprungen wird...in Zelle A11?

Betrifft: AW: Daten in anderes Tabellenblatt kopieren
von: Werner
Geschrieben am: 09.10.2020 21:43:49

Hallo,
Public Sub Archivierung()
Dim loLetzteQuelle As Long, loLetzteZiel As Long

Application.ScreenUpdating = False

With Worksheets("aktuell")
    loLetzteQuelle = .Cells(.Rows.Count, "A").End(xlUp).Row
    .Range(.Cells(11, "A"), .Cells(loLetzteQuelle, "N")).Copy
    With Worksheets("archiv")
        loLetzteZiel = .Cells(.Rows.Count, "A").End(xlUp).Offset(1).Row
        If loLetzteZiel < 11 Then loLetzteZiel = 11
        .Cells(loLetzteZiel, "A").PasteSpecial Paste:=xlPasteValues
        .Cells(loLetzteZiel, "A").PasteSpecial Paste:=xlPasteFormats
        .Activate
        .Range("A11").Select
    End With
    .Range(.Cells(11, "A"), .Cells(loLetzteQuelle, "N")).ClearContents
    .Activate
    .Range("A11").Select
End With

Application.CutCopyMode = False
End Sub
Gruß Werner

Betrifft: AW: Daten in anderes Tabellenblatt kopieren
von: harti
Geschrieben am: 09.10.2020 21:53:36

Hallo Werner,

jetzt passt's.

Vielen Dank und einen schönen Abend noch...
tobi

Betrifft: Gerne u. Danke für die Rückmeldung. o.w.T.
von: Werner
Geschrieben am: 09.10.2020 22:03:31