4.6k Aufrufe
Gefragt in Tabellenkalkulation von
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

16 Antworten

0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
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
0 Punkte
Beantwortet von
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
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
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
0 Punkte
Beantwortet von
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
0 Punkte
Beantwortet von beverly Experte (3.5k Punkte)
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
0 Punkte
Beantwortet von
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
0 Punkte
Beantwortet von
Oh hatte ich glatt übersehen:
In Range("B1") muß natürlich eine 1 stehen.
If Sheets(1).Range("B1") = 1 Then

fedjo
0 Punkte
Beantwortet von
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
0 Punkte
Beantwortet von
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
0 Punkte
Beantwortet von tomasd Einsteiger_in (53 Punkte)
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
...