Zeitstempel in Zelle einfügen

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Zeitstempel in Zelle einfügen

Beitrag von balu »

Hallo Gl.

Nichts einfacher als das.

Beispiel:
Wenn Du in G1 dein "X" setzt, dann schreibst Du einfach in G10 folgende Formel.
=WENN(G1="X";JETZT();"")
darauf schreibt dir OO in G10
09.10.2007 17:46

Das wars :lol:

Um erst die Uhrzeit, dann das Datum anzuzeigen mach noch folgendes.
Zelle G10 anklicken.
Zellen formatieren.
Auf den Reiter Zahlen gehen.
In der Kategorie wählst Du Benutzerdefiniert aus.
Unten bei Format-Code gibst Du
HH:MM TT.MM.JJJJ
ein. Und Fertig.

Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Eddy
********
Beiträge: 2781
Registriert: So, 02.10.2005 10:14

Re: Zeitstempel in Zelle einfügen

Beitrag von Eddy »

Hallo GL,

guckst Du hier:

viewtopic.php?f=10&t=4921&hilit=datum+fix

Mit heutigen Grüßen

Eddy
Benutzeravatar
lorbass
********
Beiträge: 4116
Registriert: Mo, 01.05.2006 21:29
Wohnort: Bonn

Re: Zeitstempel in Zelle einfügen

Beitrag von lorbass »

GL. hat geschrieben:das habe ich auch gefunden, habe aber keine Ahnung wie das benutzt werden soll.
Und dabei hat sich Winfried eine solche Mühe mit der zweisprachigen Bedienungsanleitung gegeben, die er auf seiner Makros-Seite veröffentlicht hat ...

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

Re: Zeitstempel in Zelle einfügen

Beitrag von komma4 »

Das funktioniert auch für Calc, wenn Du einen entsprechenden Listener-Code schreibst und aktivierst.
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)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Zeitstempel in Zelle einfügen

Beitrag von komma4 »

Ich habe auf Deine dringende Nachfrage etwas recherchiert und das folgende Beispiel gefunden, etwas angepasst und an den wichtigen (zu ändernden!) Stellen im Code kommentiert.

Zusätzliche Anmerkungen:
* Ablage des Moduls am Dokument, wo es wirken soll, oder in der STANDARD-Bibliothek von "Meine Makros"

* die verwendeten Variablen im Code sind GLOBAL definiert, was bedeutet, dass sie während der gesamten OOo-Sitzung Gültigkeit haben (ihre "Lebensdauer" haben); die Verwendung von gleichnamigen Variablen in anderen Makros verbietet sich deshalb!

* Aktivieren des Codes bspw. durch Zuweisen des Makros SetListeners zum Dokument-Öffnen-Ereignis (Anpassen>Ergeinisse)

* Deaktivieren des Listeners daselbst beim Dokument>Schliessen mittels des Makros RemoveListener
Dieses Wegnehmen des Listeners ist unbedingt notwendig, um die Stabilität von OOo nicht zu beeinflussen

* Bei meinen Tests (2.3.0) stellte sich heraus, dass schnelles Ändern/Einfügen in der beobachteten Spalte A nicht immer korrekt den Zeitstempel in die gleiche Zeile setzte, manchmal wurde auch eine andere B-Zelle besetzt, meist die zuvor bearbeitete.

* Der Code setzt den Zeitstempel bei jeder Änderung in Spalte A - nicht nur, wenn ein x eingegeben wurde

Kommst Du damit zurecht?

Code: Alles auswählen

' http://www.oooforum.org/forum/viewtopic.phtml?t=27026
' ms777 Posted: Sat Nov 19, 2005 3:30 pm
' angepasst 2007-10-17
' http://de.openoffice.info/viewtopic.php?f=2&t=14347

global lastCol as long
global lastRow as Long
global actCol as long
global actRow as Long

Global oRange
Global oContr
Global oDatChangeListener
Global oSelChangeListener


Sub RemoveListener
oRange.removeChartDataChangeEventListener(oDatChangeListener)
oContr.removeSelectionChangeListener(oSelChangeListener)
End Sub

Sub SetListeners()
oSelChangeListener = createUnoListener("O1_","com.sun.star.view.XSelectionChangeListener")
oDatChangeListener = createUnoListener("O2_","com.sun.star.chart.XChartDataChangeEventListener")
' Tabellen-Index
' oSheet = ThisComponent.sheets.getByIndex(0)
oSheet = ThisComponent.Sheets.getByName( "Tabelle1" )
oContr = ThisComponent.CurrentController

' zu beobachtender Bereich
' Angabe der Zellen
' Null-basiert: A1=0,0  B1=1,0   C4=3,3
' Links, Oben, Rechts, Unten
' hier: gesamte Spalte A, OOo Version 2
oRange = oSheet.getCellRangeByPosition(0,0,0,65535)

lastRow = 0
lastCol = 0

oContr.addSelectionChangeListener(oSelChangeListener)
oRange.addChartDataChangeEventListener(oDatChangeListener)

' ausgelagert !
' oRange.removeChartDataChangeEventListener(oDatChangeListener)
' oContr.removeSelectionChangeListener(oSelChangeListener)
 
End Sub

Sub O1_selectionChanged(aEvent as com.sun.star.lang.EventObject)
'xray.xray aEvent
oSel = aEvent.Source.Selection
if HasUnoInterfaces(oSel, "com.sun.star.sheet.XCellAddressable") then
  oCA = oSel.CellAddress
  actCol = lastCol
  actRow = lastRow
  lastCol = oCA.Column
  lastRow = oCA.Row
  endif
end sub


Sub O2_chartDataChanged(a as com.sun.star.chart.ChartDataChangeEvent)
' Spaltenangabe: B
oDateCell=ThisComponent.CurrentController.ActiveSheet.getCellByPosition(1, actRow)
oDateCell.SetString(Now)
End Sub
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)
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Zeitstempel in Zelle einfügen

Beitrag von komma4 »

GL. hat geschrieben:Wie ändert man den Code wenn ich eine andere Spalte zB. "H" für die Eingabe benötige

Code: Alles auswählen

' zu beobachtender Bereich
' Angabe der Zellen
' Null-basiert: A1=0,0  B1=1,0   C4=3,3
' Links, Oben, Rechts, Unten
' hier: gesamte Spalte H, OOo Version 2
oRange = oSheet.getCellRangeByPosition(7,0,7,65535)
GL. hat geschrieben:der Zeitstempel soll aber in Spalte "C" erscheinen?

Code: Alles auswählen

Sub O2_chartDataChanged(a as com.sun.star.chart.ChartDataChangeEvent)
' Spaltenangabe: C
oDateCell=ThisComponent.CurrentController.ActiveSheet.getCellByPosition(2, actRow)
GL. hat geschrieben:Wie ändert man den Code wenn ich eine andere Spalte zB. "H1" für die Eingabe benötige, der Zeitstempel soll aber in Spalte "C" immer 2 Reihen tiefer erscheinen?

Code: Alles auswählen

Sub O2_chartDataChanged(a as com.sun.star.chart.ChartDataChangeEvent)
' Spaltenangabe: C, aber zwei Reihen unterhalb
oDateCell=ThisComponent.CurrentController.ActiveSheet.getCellByPosition(2, actRow+2)
Alles ungetestet: verschwinde nun aus dem Büro :-)
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)
klik
Beiträge: 2
Registriert: Di, 09.01.2007 12:47

Re: Zeitstempel in Zelle einfügen

Beitrag von klik »

Erst mal herzlichen Dank für die Lösung auch meines Problems.

Leider macht das schon beschreibene Verhalten mir noch größere Probleme:
komma4 hat geschrieben: * Bei meinen Tests (2.3.0) stellte sich heraus, dass schnelles Ändern/Einfügen in der beobachteten Spalte A nicht immer korrekt den Zeitstempel in die gleiche Zeile setzte, manchmal wurde auch eine andere B-Zelle besetzt, meist die zuvor bearbeitete.
Da ich hier nochnicht recht weiterkomme bin ich für jeden Hinweis oder konkreten Lösungsvorschlag dankbar.

Gruß
Markus
Politiker
Beiträge: 4
Registriert: Mo, 07.06.2010 17:34

Re: Zeitstempel in Zelle einfügen

Beitrag von Politiker »

Hey,

ich würde mich auch für diesen Code interessieren. Welche Stellen muss ich ändern (da steht was von Kommentierung, ich bin mir aber nicht ganz sicher welche Stellen damit gemeint sind)? Wenn der Datumsstempel erscheinen soll wenn auch nur in einer (aber auch wenn in mehreren) von mehreren Spalten etwas eingetragen wird, wie lautet der Code dann? Ist es sinnvoll überall wo auf Open Office 2 verwiesen wird dies in Open Office 3 zu ändern, oder gefährdet dies die Stabilität?

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

Re: Zeitstempel in Zelle einfügen

Beitrag von komma4 »

Das geht nicht so einfach.

Auslöser des Zeitstempels ist die Aktion "Zellinhalt hat sich geändert" da ist der alte Inhalt von Spalte A bereits weg!
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)
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Zeitstempel in Zelle einfügen

Beitrag von clag »

Hallo Komma4, und alle anderen Makrokönner :)

so eine ähnlich wie die von ibrahimaba gewünschte Funktion hätte ich auch schon mal gern gehabt
komma4 hat geschrieben:Das geht nicht so einfach.
Auslöser des Zeitstempels ist die Aktion "Zellinhalt hat sich geändert" da ist der alte Inhalt von Spalte A bereits weg!
da hätte ich jetzt die Idee das mit zwei Backup-Spalten zu realisieren oder gar mit einer eigenen Backup Tabelle
nur steht mir mal wieder mein Codeunwissen dabei im Weg :?

also ich dachte mir das ungefähr so
Wenn in A1 eine Änderung festgestellt wird und das Makro in B1 der time-stamp gesetzt hat, könnte das Makro doch auch noch den
Inhalt von D1 nach E1 verschieben und den Inhalt von A1 nach D1 kopieren oder ein neue Zelle vor D1 einfügen mit dem Inhalt von A1
dann hat man immer eine Zelle also E1 die den vorherigen Zellinhalt darstellt.

Das könnte man dann sogar über mehrere Stufen machen sodass man eine regelrechte Zell-historie bekommt.

Wäre es denn sehr schwierig diese beiden zusätzlichen Kopieraktionen in das Makro einzubauen ??
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Zeitstempel in Zelle einfügen

Beitrag von komma4 »

Naja, geht schon "irgendwie" ... habe bloss aktuell keinen Code zur Hand.

Suche mal nach einem Listener, der die Selektion einer Zelle feststellt ( SelectionChanged ?). Dann deren Inhalt sichern (merken) und bei Aufruf des Änderungs-Listeners den gemerkten Wert in Deine Spalte C schreiben.

Brauchst halt zwei verschiedene Listener - sollte aber machbar sein.


Viel Erfolg!
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)
tswmjr
Beiträge: 7
Registriert: Mo, 06.12.2010 17:08

Re: Zeitstempel in Zelle einfügen

Beitrag von tswmjr »

Hallo,
was kann ich machen, dass das Makro für alle Tabellenblätter angewendet wird? Hat jemand einen Trick?
Ausserdem muss es doch möglich sein, das Makro nicht immer erst zu aktivieren müssen, oder?
Hoffe ihr könnt mir helfen!
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Zeitstempel in Zelle einfügen

Beitrag von clag »

Hallo tswmjr,

deine Beschreibung dessen was du erreichen möchtest ist doch ein bisschen dürftig
um darauf eine halbwegs sinnige Antwort geben zu können.

Beschreibe doch bitte etwas genauer was du in den Tabellen damit
tswmjr hat geschrieben:dass das Makro für alle Tabellenblätter angewendet wird?
erreichen möchtest!
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
tswmjr
Beiträge: 7
Registriert: Mo, 06.12.2010 17:08

Re: Zeitstempel in Zelle einfügen

Beitrag von tswmjr »

Hallo ich hatte gemeint, dass es in allen Tabellenblättern der Arbeitsmappe funktioniert und nicht nur auf dem ersten. Hab aber bereits eine Lösung. Trozdem Danke.
Hier gibt es auch einen Zeit/Datumstempel
viewtopic.php?f=18&t=45026
Antworten