5.5k Aufrufe
Gefragt in Tabellenkalkulation von finger59 Experte (1.3k Punkte)
Hallo liebe Excelianer,

leider komme ich mit meinen VBA-Kenntnissen so nicht weiter und hoffe auf Eure Hilfe.

Mit dem Makrorecorder habe ich den nachstehenden Code aufgezeichnet, der aber in der Zukunft dann nicht mehr so funktioniert, da die Datei jeweils um einen weiteren Monat erweitert wird.

Erreicht werden soll, dass immer die letzte (=immer auch das aktuellste Tabellenblatt) kopiert werden soll und dann als neues Tabellenblatt als letztes stehen soll.

Beim Aufzeichnen mit dem Recorder nimmt er jedoch den Tabellennamen hier im Moment April und macht daraus April2 - was ja soweit auch logisch ist. Aber beim nächsten Aufrufen des Makros würde er wieder den April nehmen und deshalb die Frage... wie muss das Makro aussehen, damit immer das letzte Tabellenblatt zum Kopieren genommen wird.

Der jetzige Code sieht wie folgt aus:
Sub kopieren
ChDir _
"G:\Personal\Datenerfassung Statistik\Personalstamm\Geburtstagslisten lfd. Jahr"
Workbooks.Open Filename:= _
"G:\Personal\Datenerfassung Statistik\Personalstamm\Geburtstagslisten lfd. Jahr\Geburtstagsliste ab Januar 2010.xls"
Sheets("April 2010").Select
Sheets("April 2010").Copy After:=Sheets(4)
Range("M1").Select
ActiveCell.FormulaR1C1 = "=R[1]C[-9]+31"
Range("M1").Select
Selection.Copy
Range("D2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("M1").Select
Application.CutCopyMode = False
Selection.ClearContents
Range("A1").Select
End Sub


Mit der Zelle M1 wird das Datum um einen Monat höher gesetzt und das alte Datum überschrieben.

Vielen Dank an alle Interessierten und Helfer...

In diesem Sinne.. have a nice Day... Gruß Helmut

5 Antworten

0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

leider kann ich deinen Kopiervorgang nicht so richtig nachvollziehen, aber ich vermute du willst das Datenblatt vom April für den Mai nutzen

Hier ein Ansatz

Sub kopieren()
'ChDir "G:\Personal\Datenerfassung Statistik\Personalstamm\Geburtstagslisten lfd. Jahr"
' Workbooks.Open Filename:="G:\Personal\Datenerfassung Statistik\Personalstamm\Geburtstagslisten lfd. Jahr\Geburtstagsliste ab Januar 2010.xls"
LetztesBlatt = ActiveWorkbook.Sheets.Count
Sheets.Add After:=Sheets(LetztesBlatt)
Sheets(LetztesBlatt).Select
Sheets(LetztesBlatt).Copy

Range("M1").Select
ActiveCell.FormulaR1C1 = "=R[1]C[-9]+31"
Range("M1").Select
Selection.Copy
Range("D2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("M1").Select
Application.CutCopyMode = False
Selection.ClearContents
Range("A1").Select
End Sub

Die fett hinterlegten Zeilen sind mit der Funktion lestztes Blatt verbunden, der Rest ist für mich nicht nachvollziebar, da ic keinen Schimmer habe was da gemacht werden soll

Gruß

Helmut
0 Punkte
Beantwortet von finger59 Experte (1.3k Punkte)
Hallo Helmut,

erstmal vielen Dank für die Info bzgl. des Hinweises wie man überhaupt das letzte Tabellenblatt innerhalb einer Arbeitsmappe findet.

So ganz ist es noch nicht das was ich gewollt habe, aber ich werde selber jetzt mal tüfteln.

Ich wollte das letzte Tabellenblatt (war benannt mit April 2010) über verschieben-kopieren und als letztes Blatt kopiert erhalten.

Wenn ich das so vornehme, dann wird aus dem Tabellennamen ja April 2010(2) und hätte eine 1zu1-Kopie zu April 2010.

Allerdings über den Makrorecorder wird dann ja jedesmal (siehe Code) die Tabellenblätter mit den vergebenen Namen direkt angesprochen und das möchte ich ja eben mit dieser Funktion, die ich mir jetzt näher ansehen werde, vermeiden.

Was bei Deiner Lösung jedoch passiert ist folgendes....

Das bisherige Datei wird hinter dem Tabellenblatt April 2010 um ein Tabellenblatt namens Tabelle1 erweitert und ist leer, während das Tabellenblatt April 2010 noch mal als eigenständiges Tabellenblatt und mit dem Tabellenblattnamen April 2010 erstellt.

Der Rest mit der Zelle M1 ist etwas was ich für die neue Monatstabelle haben möchte.

Für mich war halt das unklar wie ich überhaupt das letzte Tabellenblatt ermitteln kann.

Schon mal vielen Dank dafür.

In diesem Sinne... have a nice Day.... Gruß Helmut
0 Punkte
Beantwortet von saarbauer Profi (15.6k Punkte)
Hallo,

dann sind wir mit dem gemachten Lösungsansatz anscheinend auf dem richtigen weg.

Beachte bitte, dass das "letzte Blatt" wie oben abgefragt immer das letzte Blatt vor der Einfügung is.

Gruß

Helmut
0 Punkte
Beantwortet von finger59 Experte (1.3k Punkte)
Hallo Helmut und natürlich auch an alle Interessierten,

leider bleibe ich doch bei meinem Problem stecken.

Das losgelöste Tabellenblatt Mappe1 (mit dem Tabellennamen April 2010) bekomme ich nicht zurück in die Ausgangsdatei hinten angehängt.

Alternativ habe ich jetzt mir überlegt, da das neu eingefügte Tabellenblatt immer die Tabelle1 ist, dann kann ich das ja direkt auch ansprechen.

Aber - neues Problem - wie erhalte ich jetzt das vorletzte Tabellenblatt (April 2010), damit ich über das normale kopieren
der Daten zu meinem neuem Monat komme.

Da ich die Tabellennamen ja nicht direkt ansprechen kann, da sich ja diese immer um ein Monatsblatt erweitern und somit benötige ich schon so eine Lösung wie letztesBlatt - hier jetzt nur vorletztes..

Meine Idee und Hoffnung es so zu versuchen hat leider nicht funktioniert...

LetztesBlatt = ActiveWorkbook.Sheets.Count -1

Da bleibt er mir auf der Tabelle1 hängen und macht da das was ich in dem Tabellenblatt davor gerne hätte.

Ich hoffe jemand kann mir da auch weiterhelfen.

Vielen Dank allen Interessierten schon mal im Voraus....

In diesem Sinne... have a nice Day... Gruß Helmut
0 Punkte
Beantwortet von finger59 Experte (1.3k Punkte)
Hallo Helmut und ihr anderen Helfer und Interessierte,

falls Euch noch eine andere und sicherlich bessere Lösung habt, so würde ich Euch danken.

Aber ich habe mir jetzt eine Eselsbrücke mit der Lösung von AW1 gebaut, da dort ja immer eine neue Mappe mit Namen Mappe1 angelegt wird.

Diese nehme ich jetzt als Basis für die nächsten Schritt, da ich diese ja mit Mappe1 direkt ansprechen kann und nicht mit
letztesBlatt usw..

Wie gesagt, falls es dennoch einen schöneren Weg gibt, wie z.B. diese Mappe1 direkt in die Datei - Geburtstagsliste ab Januar 2010.xls - und dort z.B. auch mit vorletzte Tabelle die Daten hin- und herkopieren kann, dann wäre es toll.

Ansonsten wünsche ich allen noch einen schönen Tag....

In diesem Sinne... Gruß Helmut
...