Datum der letzten Änderung in Zelle anzeigen lassen

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Datum der letzten Änderung in Zelle anzeigen lassen

Beitrag von komma4 »

In einer Zelle kann nur ein Text, ein Wert oder eine Formel stehen.

Lösung:
schreibe =JETZT() in Deine Zelle, dann formatiere sie (Format>Zellen...>Zahlen>Zahlen-Format "letzte Änderung " JJJJ-MM-TT)


Hilft Dir das?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
chrk
*******
Beiträge: 1670
Registriert: Sa, 22.09.2007 18:09

Re: Datum der letzten Änderung in Zelle anzeigen lassen

Beitrag von chrk »

Mit JETZT() wäre aber nur der letzte - nämlich der aktuelle - Zugriff dokumentiert. JETZT() aktualisiert sich bei jeder Neuberechnung der Tabelle, ob automatisch oder manuell. - Schau mal in die Hilfe.

Um das letzte Änderungsdatum aus den Dateieigenschaften zu ziehen könnte man eine benutzerdefinierte Funktion schreiben - da ich aber die Methode nicht kenne, um an die Dateieigenschaften zu kommen, mag ich hier keine vorschlagen.
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Datum der letzten Änderung in Zelle anzeigen lassen

Beitrag von komma4 »

OK, um noch genauer zu werden:


mit dem Inhalt aus Datei>Eigenschaften>letzte Änderung bekommt man den Zeitstempel der letzten Sicherung der Datei.

Code: Alles auswählen

Function CalcDoc_Modify_Date()
sTemp = "n/a"

oDok = ThisComponent
If IsNull( oDok ) THEN
 CalcDoc_Modify_Date() = sTemp
 msgbox "oDok null"
Exit Function
End If

If IsEmpty( oDok ) THEN
 CalcDoc_Modify_Date() = sTemp
 msgbox "oDok empty"
Exit Function
End If

If oDok.supportsService(_
 "com.sun.star.sheet.SpreadsheetDocument" ) Then
 cf_oDAT = oDok.DocumentInfo.ModifyDate
 ' work with DocInfo
 if IsEmpty( cf_oDAT ) then
 	sTemp = "n/a"
 else
	With cf_oDAT
	' set return format
	' force month and day to two digits
	sTemp = _
		.Year & "-" & _
		Format( .Month, "0#" ) & "-" & _
		Format( .Day, "0#" ) 
	End With
	
End If


' assign func return value
CalcDoc_Modify_Date = sTemp

' check DOK
End If
End Function
Speichern des Codes in der STANDARD Bibliothek der OOo Installation, Aufruf der Funktion mit =CalcDoc_Modify_Date()
Für den Textzusatz "letzte Änderung" dann wieder mit der Formatierung der Zelle arbeiten (wenn's nicht eh eine Spalte "Letzte Änderung" ist)


Für das automatische Festhalten einer Änderung: programmieren! Beispiel onColumnChange
onColumnChange hat geschrieben:
Dieses Code-Beispiel beobachtet auf Eingaben (in der Spalte A auf einem Tabellenblatt "Tabelle1") und setzt daraufhin einen Zeitstempel in die korrespondierende Zeile der Spalte B
[Verwendung eines LISTENERS]
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Datum der letzten Änderung in Zelle anzeigen lassen

Beitrag von turtle47 »

Hallo Zusammen,
komma4 hat geschrieben:In einer Zelle kann nur ein Text, ein Wert oder eine Formel stehen.
Das stimmt leider nicht ganz.
Man kann es mit einer Formel wie folgt lösen:

Code: Alles auswählen

=("Letzte Änderung: "&TEXT(JETZT();"TT.MM.JJJJ HH:MM:SS"))
Habe ich mir mal von Karolus abgeschaut. :wink:

Schöne Grüsse.

Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
chrk
*******
Beiträge: 1670
Registriert: Sa, 22.09.2007 18:09

Re: Datum der letzten Änderung in Zelle anzeigen lassen

Beitrag von chrk »

tox hat geschrieben:Der erste Vorschlag von Dir komma4 ist genau, das was ich gesucht hab.
Das ist mir aus der Beschreibung nicht ganz klar geworden, ich hätte eher gedacht, Du suchst nach einer persistenteren Speicherung des Datums. Da bietet sich die benutzerdefinierte Funktion von Winfried an. - Die sieht übrigens komplizierter aus, als ich mir das vorgestellt habe. :shock:

@Jürgen
Da gibt es aber einen erheblichen Unterschied. Du hast da eine Formel, die einen String erzeugt, in der ursprünglichen Formatierungslösung von Winfried ist der Zellwert immer noch die Datumszahl. - Mit der könnte man noch weiterrechnen, wenn es denn Sinn machen würde.
Ibanez
**
Beiträge: 40
Registriert: Fr, 25.07.2008 09:50

Re: Datum der letzten Änderung in Zelle anzeigen lassen

Beitrag von Ibanez »

Ich benötige für ein Sortierkriterium das Änderungsdatum (Zeilen, bzw. Zellen bezogen). Habe den Code mal für mein Bedürfnis abgeändert:

Code: Alles auswählen

=WENN(ISTTEXT(A2);(TEXT(JETZT();"TT.MM.JJJJ HH:MM:SS"));"")
. Das Änderungsdatum wird in die Zelle B2 übetragen. Für die Zelle B3 gilt folgender Code

Code: Alles auswählen

=WENN(ISTTEXT(A3);(TEXT(JETZT();"TT.MM.JJJJ HH:MM:SS"));"")
Problem ist, ändere ich den Text in einer der A-Spalten ändert sich automatisch auch das Datum und die Zeit in allen B-Spalten. Mein Ergebenis Soll aber eineindeutig sein. D.h A2 ist NUR mit B2 gekoppelt und wird auch nur geändert wenn A2 geändert wird. B3 ändert sich nur bei Änderung von A3.
Jemand eine Idee?

Gruß
Ibanez

p.s. dass mit dem ISTTEXT hat keinerlei Bedeutung, in die Zellen werden nur Textwerte Eingetragen!
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Datum der letzten Änderung in Zelle anzeigen lassen

Beitrag von komma4 »

hatten wir auch schonmal (geht nicht mit Formeln, aber mit einem Makro):
onColumnChange
onColumnChange hat geschrieben:Dieses Code-Beispiel beobachtet auf Eingaben (in der Spalte A auf einem Tabellenblatt "Tabelle1") und setzt daraufhin einen Zeitstempel in die korrespondierende Zeile der Spalte B
[Verwendung eines LISTENERS]
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
AhQ
*******
Beiträge: 1096
Registriert: Fr, 15.06.2007 11:03
Wohnort: Regensburg
Kontaktdaten:

Re: Datum der letzten Änderung in Zelle anzeigen lassen

Beitrag von AhQ »

Hallo,
komma4 hat geschrieben:hatten wir auch schonmal (geht nicht mit Formeln, aber mit einem Makro):
das dachte ich auch, dann wurde ich eines besseren belehrt und zwar hier. Aber genau den Aufbau beachten, ich bin im ersten Anlauf gescheitert, wie es an meinen Fragen deutlich sichtbar wird. :(

Viele Grüße
AhQ
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Datum der letzten Änderung in Zelle anzeigen lassen

Beitrag von komma4 »

Mit der Formel wird das Datum geschrieben, wenn der Zellinhalt in A1 gesetzt wird. Sie versagt aber, wenn der Inhalt (ohne Löschen des Inhalts) geändert wird.


Die Ausgabe des "Datums des letzten Speicherns" (mein Codebeispiel weiter unten) geht weiterhin nur, wenn auf das DocumentInfo-Objekt zugegriffen wird.
Neu: ab Version OOo 3.0.0 wird dieses offiziell nicht mehr unterstützt ("deprecated"), statt dessen wurde die Eigenschaft DocumentProperties eingeführt:

Code: Alles auswählen

Function CalcDoc_Modification_Date()
sTemp = "n/a"

oDok = ThisComponent
If IsNull( oDok ) THEN
   CalcDoc_Modification_Date() = sTemp
   msgbox "oDok null"
   Exit Function
End If

If IsEmpty( oDok ) THEN
   CalcDoc_Modification_Date() = sTemp
   msgbox "oDok empty"
   Exit Function
End If

' da hier als Calc-Funktion ("cf_")genutzt:
' Abfrage des Dokumententyps
If oDok.supportsService(_
   "com.sun.star.sheet.SpreadsheetDocument" ) Then
   ' neue Eigenschaft ab OOo 3.0.0
   cf_oDAT = oDok.DocumentProperties.ModificationDate
   ' work with DocInfo
   If IsEmpty( cf_oDAT ) Then
      sTemp = "n/a"
   else
      With cf_oDAT
      ' set return format
      ' force month and day to two digits
      sTemp = _
        .Year & "-" & _
        Format( .Month, "0#" ) & "-" & _
        Format( .Day, "0#" )
      End With
   End If   'gefülltes Objekt

' assign func return value
CalcDoc_Modification_Date = sTemp

End If  ' check DOK
End Function[
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
Gesperrt