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…