online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon Lamotte2 vom 28.05.2021, 15:19 Options

Werte datumsabhängig in anderes Tabellenblatt kopieren

Hallo,
ich habe ein kleines Makro, welches Messwerte im Blatt Tabelle1 einträgt. Nun möchte ich diese Monatswerte ( A13:H2988 ) am jeweiligen Monatsersten kopieren in ein anderes Tabellenblatt. Also am 01.05.09 in das Blatt 0409 , am 01.06.09 in das Blatt 0509 usw. Ich habe dazu in A1 mit =Heute() das aktuelle Datum und in B1 mit =TAG(A1) und in C1 mit =Monat(A1)-1 mir den Tag und den Vormonat aus dem Datum herausgezogen. Nun müsste das Makro erkennen, wenn B1 =1, dann kopiere die Werte in das Blatt vom Vormonat. Leider bekomme ich das ohne Hilfe nicht hin. Vielleicht kann mir jemand helfen.
Freundliche Grüße
Lamotte2


Antwort schreiben

Antwort 1 von Beverly vom 29.05.2021, 10:16 Options

Hi,

wenn du die Arbeitsmappe jeden Tag öffnest sollte es ausreichen, wenn du den Tag in A1 prüfst:
Private Sub Workbook_Open()
    If Day(Range("A1")) = 1 Then MsgBox "Bitte kopieren"
End Sub

Bis später,
Karin

Antwort 2 von Lamotte2 vom 29.05.2021, 16:23 Options

Hallo Karin,
an der Datei arbeiten mehrere Personen, die nicht alle so vertraut mit Excel sind. Deshalb sollte alles möglchst automatisch ablaufen.
Trotzdem Danke für Deine Antwort.
Gruß Lamotte2

Antwort 3 von Beverly vom 29.05.2021, 19:22 Options

Hi,

sorry, aber welchen Automatismus möchtest du denn noch? Du hast geschrieben, dass du bereits ein Makro hast, welches die Daten kopiert und du nur noch wissen möchtest, wie man das Ganze automatisch auslösen kann wenn der Monatserste eintritt - und genau das macht der Code. Beim Öffnen der Arbeitsmappe wird am 1. jedes Monats der Code ausgeführt. Du musst nur noch anstelle der MsgBox deinen Makronamen schreiben, ich kenne ihn nicht und musste es deshalb mit der einfachsten Methode testen - und das ist eine MsgBox...

Bis später,
Karin

Antwort 4 von Lamotte2 vom 29.05.2021, 20:58 Options

Hallo Karin,
ich möchte, dass am 01.05. in das Sheet 0409, am 01.06. in das Sheet 0509,am 01.07. in das Sheet 0609 usw. ( Monatsabschluß ) kopiert wird. Ansonsten müsste ich das Makro jeden Monat verändern.
Schöne Feiertage und bis nach Pfingsten.
Lamotte2

Antwort 5 von Beverly vom 30.05.2021, 09:50 Options

Hi,

bei mir wird jeweils am Monatsersten beim Öffnen der Arbeitsmappe die MsgBox aufgerufen. Wenn du nun - wie in meinem vorhergehenden Beitrag geschrieben - die MsgBox durch deinen Makronamen ersetzt, wird bei dir jeweils am Monatsersten dein Makro ausgeführt. Warum musst du denn da jeden Monat das Makro verändern? Also irgendwie verstehe ich deine Logik nicht.

Bis später,
Karin

Antwort 6 von fedjo vom 30.05.2021, 14:47 Options

Hallo,
wenn ich deine Angaben richtig verstanden haben, dann sollten die Daten gleich in das richtige Tabellenblatt eingefügt werden.
Dazu ein kleines Muster.

A1= Heute
B1= Tag
C1= Monat

Private Sub Workbook_Open()
Dim j As String
j = Format(Date, "YY")
If Sheets(1).Range("B1") = 30 Then
Sheets(1).Range("H13:H2988").Copy _
Worksheets("0" & Range("C1") - 1 & j).Range("H13:H2988")
End If
End Sub

Gruß
fedjo

Antwort 7 von fedjo vom 30.05.2021, 14:55 Options

Oh hatte ich glatt übersehen:
In Range("B1") muß natürlich eine 1 stehen.
If Sheets(1).Range("B1") = 1 Then

fedjo

Antwort 8 von Lamotte2 vom 06.06.2021, 06:13 Options

Hallo fedjo,
ich war über Pfingsten im Urlaub, deshalb möchte ich mich erst jetzt bedanken. Deine Lösung ist genau das, was ich gesucht habe. Klappt hervorragend.
Vielen Dank und schönes Wochenende.
Gruß
Lamotte2

Antwort 9 von fedjo vom 06.06.2021, 08:32 Options

Hallo Lamotte2,
es gibt auch noch die Möglichkeit ohne die Zellen nach dem Datum abzufragen.
Code in diese Arbeitsmappe eintragen.
Gruß
fedjo

Option Explicit
Sub Monat()
Dim m As String
Dim j As String
j = Format(Date, "YY")
m = Format(Date, "mm") - 1
If Format(Date, "dd") = 1 Then ' Tag wird abgefragt
Sheets(1).Range("H13:H2988").Copy _
Worksheets("0" & m & j).Range("H13:H2988") 'Daten werden eingetragen
End If
End Sub

Antwort 10 von tomasd vom 02.01.2022, 14:13 Options

Hallo Fedjo ,
ich wünsche Dir und allen anderen ein gutes neues Jahr.
Dein Makro hat in den Monaten 1 bis 9 ausgezeichnet funktioniert. Für die Monate 10 bis 12 habe ich den Code etwas ändern müssen:
Sheets(1).Range("H13:H2988").Copy _
Worksheets("0" & m & j).Range("H13:H2988") 'Daten werden eingetragen

in
Sheets(1).Range("H13:H2988").Copy _
Worksheets(m & j).Range("H13:H2988") 'Daten werden eingetragen

Zum Jahreswechsel am 01.01.10 funktioniert das Makro leider nicht. Vermutlich findet das Makro den Dezember als vorherigen Monat nicht.
Mfg
tomasd

Antwort 11 von fedjo vom 03.01.2022, 18:08 Options

Hallo tomasd (Lamotte2 ),
habe den Code etwas umgestellt:

Sub Monat()
Dim D As String
D = Format(DateSerial(Year(Date), Month(Date) - 1, Day(Date)), "mmyy")
If Format(Date, "dd") = 1 Then ' Tag wird abgefragt
Worksheets("Tabelle1").Range("H13:H2988").Copy _
Worksheets(D).Range("H13:H2988")    'Daten werden eingetragen
End If
End Sub

Das Makro funktioniert  z.B. mit Sheets Namen: "1209"
Solltest du z.B.  den Sheets Namen: "12 09" bevorzugen ,
dann den Code so umstellen: D = Format(DateSerial(Year(Date), Month(Date) - 1, Day(Date)), "mm yy")

Natürlich kannst du das Makro auch in
Private Sub Workbook_Open()
oder Private Sub Worksheet_Activate() einfügen.

Gruß
fedjo

Antwort 12 von fedjo vom 04.01.2022, 11:24 Options

Hallo tomasd ,
du könntest auch noch das dazu  nötige Tabellenblatt vom Makro erstellen lassen.

Gruß
fedjo

Sub Monat_Tabellenblatt()
Application.ScreenUpdating = False
Dim x As Object
Dim neu$, mldg$, title$
Dim ergebnis%, stil%
If Format(Date, "dd") = 1 Then ' Tag wird abgefragt
 'Tabellenblatt wird erstellt
     neu = Format(DateSerial(Year(Date), Month(Date) - 1, Day(Date)), "mmyy")
    For Each x In ActiveWorkbook.Sheets
    If x.Name = neu Then
        mldg = "Blattname existiert bereits!"
        stil = vbCritical + vbOKOnly
        title = "Achtung"
        ergebnis = MsgBox(mldg, stil, title)
        Exit Sub
    End If
    Next x
    Sheets.Add
    ActiveSheet.Name = neu
    Worksheets("Tabelle1").Select
Dim D As String
D = Format(DateSerial(Year(Date), Month(Date) - 1, Day(Date)), "mmyy")
Sheets(1).Range("H13:H2988").Copy _
Worksheets(D).Range("H13:H2988")    'Daten werden eingetragen
End If
End Sub

Antwort 13 von tomasd vom 06.01.2022, 17:01 Options

Hallo fedjo,
ich bin noch nicht dazu gekommen das Makro zu testen. Möchte mich aber trotzdem schon mal vorab bedanken für deine schnelle Antwort.
Freundliche Grüße
tomasd

Antwort 14 von tomasd vom 01.02.2022, 02:21 Options

Hallo Fedjo,
habe heute das Makro anläßlich des Monatswechsels gestartet und deine Lösung erfolgreich getestet. Dabei ist aber ein anderes Problem aufgetreten. Nach dem Kopieren in das Tabellenblatt D("0110"):
D = Format(DateSerial(Year(Date), Month(Date) - 1, Day(Date)), "mmyy")
If Format(Date, "dd") = 1 Then ' Tag wird abgefragt
Worksheets("Tabelle1").Range("H13:H2988").Copy _
Worksheets(D).Range("H13:H2988")    'Daten werden eingetragen  

sollten in dem neuen Tabellenblatt die Spalten A bis D ausgeblendet werden ( funktionierte bisher mit der alten Lösung )
Columns("A:D"),select
Selection.EntireColumn.Hidden = True 

ich als Laie habe davor noch
ActiveSheet.select 
gesetzt, aber es bleibt offenbar "Tabelle1" aktives Sheet. Kannst Du mir noch mal helfen, wie ich das neue Tabellenblatt ansprechen muß für weitere Aktionen ?
Freundliche Grüße
tomasd

Antwort 15 von fedjo vom 01.02.2022, 17:19 Options

Hallo tomasd,
zum Ausblenden der Spalten A:D.

End If
Worksheets(D).Columns("A:D").EntireColumn.Hidden = True
End Sub

Gruß
fedjo

Antwort 16 von tomasd vom 06.02.2022, 11:31 Options

Hallo Fedjo,
ich habe deine Lösung heute getestet und es funktioniert bestens. Nochmals vielen Dank für Deine Hilfe.
Freundliche Grüße
tomasd

Ähnliche Themen

Aktuelles Tabellenblatt in Excel mit Makro kopieren
TR007  22.12.2007 - 165 Hits - 2 Antworten

Excel Tabellenblatt in eine andere Datei kopieren
oliverB  31.10.2008 - 102 Hits - 1 Antwort

Tabellenblatt kopieren, aber ohne Makro
hpt  11.03.2009 - 948 Hits - 6 Antworten

Daten kopieren und im anderen Tabellenblatt wert einfügen
afetincii  03.04.2009 - 417 Hits - 2 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026