🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

[gelöst] Wenn Zelle geändert wird, Änderungsdatum in andere Zelle schreiben

CALC ist die Tabellenkalkulation, die Sie immer wollten.
schane65
Beiträge: 53
Registriert: Mi 16. Mai 2012, 17:22

[gelöst] Wenn Zelle geändert wird, Änderungsdatum in andere Zelle schreiben

Beitrag von schane65 » Fr 27. Mai 2016, 15:24

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
Zuletzt geändert von schane65 am Mo 30. Mai 2016, 14:22, insgesamt 1-mal geändert.

mikele
* LO-Experte *
Beiträge: 1930
Registriert: Mo 1. Aug 2011, 20:51

Re: Wenn Zelle geändert wird, Änderungsdatum in andere Zelle schreiben

Beitrag von mikele » Sa 28. Mai 2016, 12:58

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:

Code: Alles auswählen

=modify_date_udf()
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.
Dateianhänge
makro_calc_änderungsdatum.ods
(9.54 KiB) 454-mal heruntergeladen
Gruß,
mikele

schane65
Beiträge: 53
Registriert: Mi 16. Mai 2012, 17:22

Re: Wenn Zelle geändert wird, Änderungsdatum in andere Zelle schreiben

Beitrag von schane65 » So 29. Mai 2016, 11:56

Vielen lieben Dank. Ich denke, damit komme ich weiter.


Gruß

Andy

schane65
Beiträge: 53
Registriert: Mi 16. Mai 2012, 17:22

Re: Wenn Zelle geändert wird, Änderungsdatum in andere Zelle schreiben

Beitrag von schane65 » So 29. Mai 2016, 18:49

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

schane65
Beiträge: 53
Registriert: Mi 16. Mai 2012, 17:22

Re: Wenn Zelle geändert wird, Änderungsdatum in andere Zelle schreiben

Beitrag von schane65 » Mo 30. Mai 2016, 11:30

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

mikele
* LO-Experte *
Beiträge: 1930
Registriert: Mo 1. Aug 2011, 20:51

Re: Wenn Zelle geändert wird, Änderungsdatum in andere Zelle schreiben

Beitrag von mikele » Mo 30. Mai 2016, 12:32

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.
Gruß,
mikele

schane65
Beiträge: 53
Registriert: Mi 16. Mai 2012, 17:22

Re: Wenn Zelle geändert wird, Änderungsdatum in andere Zelle schreiben

Beitrag von schane65 » Mo 30. Mai 2016, 13:32

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

schane65
Beiträge: 53
Registriert: Mi 16. Mai 2012, 17:22

Re: Wenn Zelle geändert wird, Änderungsdatum in andere Zelle schreiben

Beitrag von schane65 » Mo 30. Mai 2016, 13:41

Hi !

Was muss ich denn in die Zelle A 1 bei der zweiten Alternative hineinschreiben? Vielleicht liegt da ja mein Fehler.


Gruß

Andy

craig
* LO-Experte *
Beiträge: 1137
Registriert: Do 21. Apr 2016, 11:42

Re: Wenn Zelle geändert wird, Änderungsdatum in andere Zelle schreiben

Beitrag von craig » Mo 30. Mai 2016, 13:47

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
Gruß

Craig

Nie die Sicherungskopie vergessen!

════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8

schane65
Beiträge: 53
Registriert: Mi 16. Mai 2012, 17:22

Re: Wenn Zelle geändert wird, Änderungsdatum in andere Zelle schreiben

Beitrag von schane65 » Mo 30. Mai 2016, 14:11

Hallo Craig !

Genau die Info hat mir gefehlt. Jetzt funktioniert alles tadellos, danke.


Gruß

Andy


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten