Auto Kopieren wenn ein Monat rum ist

Hy, ich habe da ein Probelm.
In einer Celle steht ein Betrag X der sich täglich ändert.
Nun möchte ich, wenn ein Monat rum ist, das diese Zelle in z.B. D1 auto. kopiert werden soll. Im nächsten abgelossenen Monat soll diese Zelle in D2 auto. kopiert werden u.s.w…
Geht das ?
Viel Dank
Marcus

Hy Marcus,

Dein Betrag steht also sagen wir in A1. Dann lautet die Formel folgendermaßen: =Wenn(Tag(Heute())=1;A1;"") Diese Formel geht allerdings nur, wenn du jeden Monat eine neue Zelle anfängst. Ich werde mich allerdings noch mal an dein Problem setzen und vielleicht noch eine bessere Lösung basteln.
Gruß Alex

Danke für die Hilfe.
Aber das muß alles auto. funktionieren. Ohne das ich jedesmal etwas selber kopieren muß.
( und mit deiner Formel, funktioniert das nur für den aktuellen Monat und nicht für andere. )

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Gegenfragen
Öffnest Du die Datei denn auch jeden Tag?
Bleibt die Datei über die Datumsgrenzen hinweg geöffnet?
Wird der Wert aus einer anderen Datei ausgelesen?
Dürfen Makros verwendet werden?

Öffnest Du die Datei denn auch jeden Tag? Ja
Bleibt die Datei über die Datumsgrenzen hinweg geöffnet? Nein
Wird der Wert aus einer anderen Datei ausgelesen? Nein
Dürfen Makros verwendet werden? Ja, ich glaube es geht auch nicht anders.

Danke
Marcus

Hallo, Marcus!

Öffnest Du die Datei denn auch jeden Tag? Ja

Sicher? Oder bleibt sie am Wochenende auch mal zu? Falls ja: Schreibe in eine beliebige Zelle irgendwo hin (muss nicht sichtbar sein) das Datum des letzten Öffnens. Dies passiert im Workbook_Open-Ereignis:

Sub Workbook\_Open(kommenHierNochParameter?KeineAhnung)
...
 Tabelle3.Cells(1,1)=Date
End Sub

Bleibt die Datei über die Datumsgrenzen hinweg geöffnet? Nein

Das ist gut, sonst bräuchtest Du so was wie einen Timer, wenn Du ganz genau gehen willst.

Wird der Wert aus einer anderen Datei ausgelesen? Nein

Gut.

Dürfen Makros verwendet werden? Ja, ich glaube es geht auch nicht anders.

Richtig. Geht nicht anders. Im Workbook_Open musst Du natürlich vergleichen, ob sich der Monat geändert hat. Und zwar der aktuelle im Verhältnis zum letzten. Ungefähr so:

Private Sub Workbook\_Open()
 Dim datHeute As Date
 Dim datLetztens As Date
 Dim lngZeile As Long

 datHeute = Date
 datLetztens = Tabelle3.Cells(1, 1)
' Falls wirklich jeden Tag geöffnet, musst Du das Datum nicht 
' speichern; dann ist
' datLetztens = Date - 1
 If Month(datHeute) Month(datLetztens) Then
 ' erste freie Zelle in Spalte D suchen
 lngZeile = 1
 Do While Tabelle1.Cells(lngZeile, 4) ""
 lngZeile = lngZeile + 1
 Loop
 Tabelle1.Cells(lngZeile, 4) = Tabelle1.Cells(1, 1)
 ' nach E noch mal den Zeitpunkt der Protokollierung reinpinseln
 Tabelle1.Cells(lngZeile, 5) = Date
 ' und nach F das Datum, an dem der Eintrag gültig war
 Tabelle1.Cells(lngZeile, 6) = datLetztens
 End If
 ' und Zeitpunkt des letzten Öffnens merken, sofern benötigt
 Tabelle3.Cells(1, 1) = Date

End Sub

Wie immer uncompiliert/ungetestet.

Gruß, Manfred

Ich würde das Modul nicht mit Workbook_open starten, sondern beim Activieren des betreffenden Tabellenblattes:

Code in betreffendes Tabellenblatt

Private Sub Worksheet_Activate()
Dim Wert As Double
Dim monatswechsel As Date
monatswechsel = Range(„A1“).Value
Wert = Range(„D65536“).End(xlUp)
If Month(Date) Month(monatswechsel) Then
Range(„D65536“).End(xlUp).Offset(1, 0) = Wert
Range(„A1“).Value = Date
End If
End Sub

man braucht hierzu nur einmal das Datum in A1 setzen und es müsste funktionieren.
die Variable: Wert gehört noch angepasst.

wie Immer: noch nicht getestet.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

also mein kleiner vba-code ist folgender:

Private Sub Worksheet\_Activate()

 sourcecell = "A1"
 targetcell = "D1"

 datum = Day(Date)
 If datum = 1 Then
 inhalt = Range(sourcecell).Value
 Range(targetcell).Select

 If Not ActiveCell.Value = "" Then
 testval = Range(targetcell).Offset(1, 0).Value

 tempval = ActiveCell.Address
 If Not testval = "" Then
 tempval = Selection.End(xlDown).Address
 End If

 Range(tempval).Offset(1, 0).Select

 End If

 ActiveCell.Value = inhalt
 End If
End Sub

dabei wird an jedem 1. bei aktivierung des sheets der Wert übertragen…
kann natürlich dadurch auch mehrmals erfolgen… aber die anderen haben da ja auch schon gegenchecks parat gehabt…