Seite 1 von 2
[gelöst] Wenn Zelle geändert wird, Änderungsdatum in andere Zelle schreiben
Verfasst: Fr 27. Mai 2016, 15:24
von schane65
Hallo !
Ich möchte erreichen, dass in einer bestimmten Zelle das Änderungsdatum geschrieben wird, wenn irgendeine andere Zelle verändert wird.
Beispiel:
Heute ist der 27.05. Ich ändere Zelle B 6. Wenn ich das mache, möchte ich in der Zelle A1 das Änderungsdatum stehen haben. Es soll immer das letzte Änderungsdatum in Zelle A1 stehen.
Hat jemand eine Idee?
Danke schon mal
Andy
Re: Wenn Zelle geändert wird, Änderungsdatum in andere Zelle schreiben
Verfasst: Sa 28. Mai 2016, 12:58
von mikele
Hallo,
leider habe ich unter Calc die (Writer-)Option "Feldbefehle einfügen" nicht gefunden. Daher hilft (m. W.) nur eine Makrolösung:
Variante 1) In die Zelle A1 wird das Änderungsdatum der Datei geschrieben. Dazu kannst du folgende eigene Funktion verwenden:
Code: Alles auswählen
Function modify_date_udf()
odoc=thiscomponent
odatum=odoc.getDocumentProperties().ModificationDate
ndatum=dateserial(odatum.year,odatum.month, odatum.day)+timeserial(odatum.hours,odatum.minutes,odatum.seconds)
modify_date_udf=ndatum
End Function
In die gewünschte Zelle (A1) schriebst du dann:
siehe Anhang, Tabellenblatt1.
Variante 2) Jede Änderung auf dem Tabellenblatt führen zu einer Datumseintrag. Dazu wird das Makro modify_blatt an das Tabellenereignis "Inhalt geändert" gebunden.
Code: Alles auswählen
Sub modify_blatt(oevent)
If oevent.supportsService("com.sun.star.sheet.SheetCell") Then
nr=oevent.getcelladdress.sheet
ElseIf oevent.supportsService("com.sun.star.sheet.SheetCellRange") Then
nr=oevent.getrangeaddress.sheet
ElseIf oevent.supportsService("com.sun.star.sheet.SheetCellRanges") Then
adr=oevent.getrangeaddresses
nr=adr(0).sheet
end if
otab=thiscomponent.sheets(nr)
otab.getcellbyposition(0,0).value=now()
end sub
Das Änderungsdatum wird dann auf diesem Blatt in die Zelle A1 geschrieben.
In der Beispieldatei habe ich es mal mit dem Tabellenblatt2 so gemacht.
Re: Wenn Zelle geändert wird, Änderungsdatum in andere Zelle schreiben
Verfasst: So 29. Mai 2016, 11:56
von schane65
Vielen lieben Dank. Ich denke, damit komme ich weiter.
Gruß
Andy
Re: Wenn Zelle geändert wird, Änderungsdatum in andere Zelle schreiben
Verfasst: So 29. Mai 2016, 18:49
von schane65
Hallo!
Vielleicht bin ich ja zu blöd, aber ich habe versucht, dass =modify_date_udf() in eine weitere Tabelle einzufügen. Da funktioniert das Makro aber nicht. Was mach ich falsch?
Gruß
Andy
Re: Wenn Zelle geändert wird, Änderungsdatum in andere Zelle schreiben
Verfasst: Mo 30. Mai 2016, 11:30
von schane65
Hallo mikele !
Ich habe dein Makro mal in eine neue Calc-Tabelle eingefügt. Zuerst habe ich nur den oberen Teil, wie du gesagt hast, als Makro eingefügt, hat nicht funktioniert. Auch das gesamte Makro funktioniert nicht.
Wenn ich z.b. =modify_date_udf() in Zelle A 1 eintrage, ist bei deiner Datei dieser Eintrag in der Eingabezeile nicht mehr zu sehen. In Zelle A1 steht ein Datum und eine Uhrzeit.
Bei mir ist der Eintrag =modify_date_udf() in der Eingabezeile in Großbuchstaben vorhanden, in A1 steht ein Datum und eine Uhrzeit. Es ändert sich jedoch nichts.
Woran liegt das? Ich muss dazu sagen, Makros sind nicht meine Welt. Ich kenne mich da nur ganz wenig aus.
Gruß
Andy
Re: Wenn Zelle geändert wird, Änderungsdatum in andere Zelle schreiben
Verfasst: Mo 30. Mai 2016, 12:32
von mikele
Hallo,
prüfe zunächst, ob die Makrosicherheit (Extras->Optionen->Sicherheit) auf "mittel" steht. Dann wirst du beim Öffnen der Datei gefragt, ob Makros erlaubt werden sollen.
Re: Wenn Zelle geändert wird, Änderungsdatum in andere Zelle schreiben
Verfasst: Mo 30. Mai 2016, 13:32
von schane65
Hi mikele !
Das habe ich noch einmal überprüft, war aber schon so eingestellt. Calc frag mich ja auch, ob ich die Makros aktivieren will, was ich dann auch bestätige.
Gruß
Andreas
Re: Wenn Zelle geändert wird, Änderungsdatum in andere Zelle schreiben
Verfasst: Mo 30. Mai 2016, 13:41
von schane65
Hi !
Was muss ich denn in die Zelle A 1 bei der zweiten Alternative hineinschreiben? Vielleicht liegt da ja mein Fehler.
Gruß
Andy
Re: Wenn Zelle geändert wird, Änderungsdatum in andere Zelle schreiben
Verfasst: Mo 30. Mai 2016, 13:47
von craig
Hallo,
@mikele
Die UDF liefert bei mir nur das Datum aus den Dokument-Eigenschaften: letzte Änderung --> Datum und Uhrzeit.
siehe auch: MRI oDatum
Ich habe dann die UDF geändert und nutze wie folgt:
statt:
modify_date_udf=ndatum
nutze ich:
modify_date_udf=now()
Mit NOW werden die aktuellen Daten angezeigt.
Es erfolgt aber keine Änderung der Zeit, wenn ich eine Änderung im Sheet vornehme.
Das gesamte Sheet-Event (modify_blatt(oevent)) funktioniert einwandfrei.
@andy
Hast Du mikele's Anweisung für die Makro-Lösung befolgt?
Variante 2) Jede Änderung auf dem Tabellenblatt führen zu einer Datumseintrag. Dazu wird das Makro modify_blatt an das Tabellenereignis "Inhalt geändert" gebunden
Dazu:
1. Das Makro in Dein Dokument eingeben.
2. Dann auf den jeweilige Reiter des betreffenden Tabellenblattes Rechtsklicken.
3. "Tabellenereignisse" auswählen.
4. "Inhalt geändert"
5. Auf den Button Makro klicken.
6. Das Makro unter Deinem Dokument-Name suchen und auswählen.
Gruß
Craig
Re: Wenn Zelle geändert wird, Änderungsdatum in andere Zelle schreiben
Verfasst: Mo 30. Mai 2016, 14:11
von schane65
Hallo Craig !
Genau die Info hat mir gefehlt. Jetzt funktioniert alles tadellos, danke.
Gruß
Andy