Excel VBA - Tabellenblatt kopieren, in Folgemonat umbenennen und Wert aus momentanem Monat übertragen. Kann mir jmd. helfen?
Hallo,
Ich hab so gut wie keine Ahnung von Excel-VBAs, aber den Auftrag bekommen ein Tool zu erstellen, welches ein Vorlagen-Tabellenblatt kopiert, die Kopie dann in den nächsten Monat (Monatsnamen-Abkürzung + Jahr) umbenennt und zu Letzt einen Wert aus dem vergangenen Monat in den neuen überträgt.
Für jeden Monat soll es also ein Tabellenblatt geben.
Ich hab festgestellt, dass man mit dem Aufnahme-Tool da nicht sehr weit kommt.
Die Vorlage kopieren und umbenennen funktioniert auch schon fast, allerdings stimmt das Format noch nicht.
Ich habe keine Ahnung, welchen VBA-Befehl es benötigt um das vorherige Tabellenblatt auszuwählen, damit der Wert dann kopiert werden kann.
Vielen Dank jetzt schon einmal.
1 Antwort
Hallo,
das neue Blatt kommt vermutlich als letztes und die Vorlage direkt davor? Dann könntest du den zu kopierenden Wert so anwählen (Zeilen und Spaltennummern natürlich entsprechend anpassen):
Worksheets(Worksheets.Count).Cells(1, 1) = Worksheets(Worksheets.Count - 1).Cells(1, 1).Value
klingt als hättest du es bereits geschafft Monats- und Jahreszahl als Zahlvariable zu speichern (was mir nicht gelingen will), dann kannst du diese Variablen hierdrin nutzen:
Worksheets(Worksheets.Count).Name = Format(DateAdd("m", 1, DateSerial(Jahr, Monat, 13)), "mmm. yyyy")
Das Format ist jetzt schon mal richtig, aber scheint so als hab ich es noch nicht geschafft Monats- und Jahreszahl als Zahlvariable zu speichern. (Nur noch Jan. 2000) Trotzdem riesigen Dank an dich.
Bitte :D
ich scheine gestern zu kompliziert gedacht zu haben, so einfach geht es:
Monat = Month(Worksheets(Worksheets.Count - 1).Name)
Jahr = Year(Worksheets(Worksheets.Count - 1).Name)
Okay, jetzt hab ich doch irgendwas doppelt. Sorry, ich versteh's grad überhaupt nicht mehr.
Hier mal das Problem:
Sub Neuer_Monat()
'Vorlage kopieren:
Sheets("Vorlage").Select
Sheets("Vorlage").Copy After:=Sheets(Sheets.Count)
'Kopie in nächsten Monat umbenennen:
Worksheets(Worksheets.Count).Name = Format(DateAdd("m", 1, DateSerial(Jahr, Monat, 13)), "mmm. yyyy")
Monat = Month(Worksheets(Worksheets.Count - 1).Name)
Jahr = Year(Worksheets(Worksheets.Count - 1).Name)
'Wert aus Vormonat übertragen:
Worksheets(Worksheets.Count).Range("B2").Value = Worksheets(Worksheets.Count - 1).Range("B12").Value
End Sub
Und ohne das:
Worksheets(Worksheets.Count).Name = Format(DateAdd("m", 1, DateSerial(Jahr, Monat, 13)), "mmm. yyyy")
wird gar nichts umbenannt :-/
Du weist den Variablen Monat und Jahr gerade erst den Wert zu nachdem du sie bereits verwendest.
und beim Wert kopieren müsste dieses Value weg dann sollte es eigentlich funktionieren:
Worksheets(Worksheets.Count).Range("B2").Value = Worksheets(Worksheets.Count - 1).Range("B12").Value
Ahhh, ja klar! Jetzt ergibt es Sinn.
So funktioniert es natürlich.
Vielen Dank für deine Zeit und Geduld mit mir!
Vielen Dank. Super Tipp. Hat bei mir zwar nur mit Range funktioniert, aber es funktioniert. Du warst ne große Hilfe.
Jetzt muss ich nur noch die Umbenennung irgendwie hinbekommen, sodass bspw. nach "Mrz. 20" das nächste Tabellenblatt "Apr. 20" heißt. (Ich bekomms derzeit nur als "3" oder "4" hin.)
Hast du hierfür zufällig auch gleich die passende Lösung?