Seite 1 von 1

Re: Zeitstempel in Zelle einfügen

Verfasst: Di, 09.10.2007 17:46
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

Re: Zeitstempel in Zelle einfügen

Verfasst: Di, 09.10.2007 19:03
von Eddy
Hallo GL,

guckst Du hier:

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

Mit heutigen Grüßen

Eddy

Re: Zeitstempel in Zelle einfügen

Verfasst: Di, 09.10.2007 19:27
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

Re: Zeitstempel in Zelle einfügen

Verfasst: Mi, 10.10.2007 01:18
von komma4
Das funktioniert auch für Calc, wenn Du einen entsprechenden Listener-Code schreibst und aktivierst.

Re: Zeitstempel in Zelle einfügen

Verfasst: Mi, 17.10.2007 20:51
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

Re: Zeitstempel in Zelle einfügen

Verfasst: Do, 18.10.2007 18:17
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 :-)

Re: Zeitstempel in Zelle einfügen

Verfasst: So, 11.11.2007 12:53
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

Re: Zeitstempel in Zelle einfügen

Verfasst: Di, 08.06.2010 09:55
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

Re: Zeitstempel in Zelle einfügen

Verfasst: Di, 15.06.2010 13:20
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!

Re: Zeitstempel in Zelle einfügen

Verfasst: Mi, 16.06.2010 10:38
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 ??

Re: Zeitstempel in Zelle einfügen

Verfasst: Mi, 16.06.2010 10:51
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!

Re: Zeitstempel in Zelle einfügen

Verfasst: Di, 07.12.2010 12:05
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!

Re: Zeitstempel in Zelle einfügen

Verfasst: Di, 07.12.2010 16:59
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!

Re: Zeitstempel in Zelle einfügen

Verfasst: Mi, 08.12.2010 14:52
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