Seite 1 von 2
Datum in Abhänigkeit von Zellenänderung
Verfasst: Di 3. Jan 2017, 15:41
von puba
Hallo,
in einer Lagerbestandstabelle möchte ich gern das Datum (Erneuert am) automatisch ändern lassen,
wenn in der Spalte Mengexxxx oder xxxxPreis eine Änderung vorgenommen wurde.
Spalten:
Artikelnummer Artikelbeschreibung Warengruppe Menge2015 Menge2016 Einheit Verkaufspreis Einkaufspreis Erneuert am
Wie gehe ich da am besten vor?
Gruß
Armin
Re: Datum in Abhänigkeit von Zellenänderung
Verfasst: Di 3. Jan 2017, 18:04
von HeritzP
Hallo,
das sollte dir helfen.
http://de.openoffice.info/viewtopic.php?f=25&t=56497
Ansonsten eine Beispieldatei hochladen.
Gruß HeritzP
Re: Datum in Abhänigkeit von Zellenänderung
Verfasst: Di 3. Jan 2017, 18:59
von F3K Total
Hi,
das geht in deinem Fall mit z.B. dieser Benutzerfunktion (Makro)
Code: Alles auswählen
Function INSERT_DATE_ON_CHANGE(D,E,G,H)
INSERT_DATE_ON_CHANGE = now()
End function
Siehe Beispiel anbei. Damit das Makro laufen darf, stellst du unter Extras/Optionen/LibreOffice/Sicherheit/Makrosicherheit mindestens die Stufe "Mittel" ein, dann wirst du beim Öffnen von Dokumenten gefragt, ob du Makros ausführen möchtest.
Gruß R
Re: Datum in Abhänigkeit von Zellenänderung
Verfasst: Di 3. Jan 2017, 19:30
von karolus
Hallo
@F3K Total: Die genialsten Ideen sind einfach … ich bin fast schon frustriert das ich nicht darauf gekommen bin.
Schönes neues Jahr allerseits!
Re: Datum in Abhänigkeit von Zellenänderung
Verfasst: Di 3. Jan 2017, 19:53
von F3K Total
Hallo karolus,
danke für die Blumen
Auch ich hatte es zunächst ohne Makro, alà
lorbass versucht, ist mir leider nicht gelungen.
Dir auch ein frohes neues Jahr!
Gruß Rik
Re: Datum in Abhänigkeit von Zellenänderung
Verfasst: Di 3. Jan 2017, 19:56
von mikele
Hallo,
ich möchte ungern als Stimmungskiller auftreten, aber nachteilig ist, dass das Datum auch beim Öffnen der Datei neu gesetzt wird ... (sorry Rik

)
@Alle: Ein gesundes und friedvolles Jahr 2017!
Re: Datum in Abhänigkeit von Zellenänderung
Verfasst: Di 3. Jan 2017, 20:03
von mikele
Hallo,
lorbas' Lösung klappt mit folgender Variante:
Code: Alles auswählen
=WENN(UND(D2="";E2="");"";WENN(ZELLE("TYPE";I1)="v";I1;JETZT()))
bezogen auf F3K Total's Beispieldatei.
Re: Datum in Abhänigkeit von Zellenänderung
Verfasst: Di 3. Jan 2017, 22:50
von F3K Total
Hallo mikele,
mikele hat geschrieben:ich möchte ungern als Stimmungskiller auftreten, aber nachteilig ist, dass das Datum auch beim Öffnen der Datei neu gesetzt wird ...
Danke, ist mir nicht aufgefallen
mikele hat geschrieben:lorbas' Lösung klappt mit folgender Variante:
Code: Alles auswählen
=WENN(UND(D2="";E2="");"";WENN(ZELLE("TYPE";I1)="v";I1;JETZT()))
Kann es sein, dass ich etwas falsch mache? Bei mir wird das Datum bei jeder Änderung auf dem Tabellenblatt geändert.
Darum anbei eine etwas aufwendigere Lösung, die jetzt hoffentlich keinen Fehler mehr hat. Das folgende Makro ist an das Tabellenereignis "Inhalt geändert" gebunden.
Code: Alles auswählen
Sub INSERT_DATE_ON_CHANGE(oCell)
oCCN = oCell.Columns.ElementNames(0)
if oCCN = "D" or oCCN = "E" or oCCN = "G" or oCCN = "H" then
oTimeCell = oCell.Spreadsheet.getcellbyposition(8,oCell.Celladdress.row)
oTimeCell.value = now()
endif
End Sub
Gruß R
Re: Datum in Abhänigkeit von Zellenänderung
Verfasst: Mi 4. Jan 2017, 00:21
von karolus
Hallo
Zu letzterem hätte ich dann noch das python-äquivalent anzubieten:
Code: Alles auswählen
from datetime import datetime as dt
def timestamp_on_change(event):
dtstamp = dt.now().strftime('%Y-%m-%d %H:%M:%S')
if {'D', 'E', 'G', 'H'}.intersection( event.Columns.ElementNames ):
targetcell = event.Spreadsheet.getCellByPosition( 8, event.CellAddress.Row )
targetcell.FormulaLocal = dtstamp
Anmerkung: python hat ein eigenes Datums|Zeit-Modell … das müsste man etwas umständlich ins Datums-modell von Calc umrechnen, daher der Hack via .FormulaLocal
Re: Datum in Abhänigkeit von Zellenänderung
Verfasst: Mi 4. Jan 2017, 19:25
von puba
Hallo,
Danke für eure sehr hilfreichen Antworten und Lösungsvorschläge.
Die Beispiele von F3K Total waren sehr hilfreich.
Die erste Version der
function INSERT_DATE_ON_CHANGE(D,E,G,H)
habe ich voll verstanden und nachvollziehen können (leider mit den geschilderten Nachteilen.
Bei der 2. Version
Code: Alles auswählen
Sub INSERT_DATE_ON_CHANGE(oCell)
oCCN = oCell.Columns.ElementNames(0)
if oCCN = "D" or oCCN = "E" or oCCN = "G" or oCCN = "H" then
oTimeCell = oCell.Spreadsheet.getcellbyposition(8,oCell.Celladdress.row)
oTimeCell.value = now()
endif
End Sub
habe ich ein Problem, das nachzuvollziehen.
In der Beispiel-Datei klappt das
in meiner Tabelle nicht.
Was passiert in der 4. Zeile :
Code: Alles auswählen
oTimeCell = oCell.Spreadsheet.getcellbyposition(8,oCell.Celladdress.row)
?
Warum bekomme ich beim Ausführen der 2. Zeile den Hinweis:
BASIC-Laufzeitfehler.
Argument ist nicht optional.
?
bzw:
Ein Scripting Framework Fehler trat während der Ausführung vom Basic-Skript Standard.Module1.INSERT_DATE_ON_CHANGE auf.
Meldung: wrong number of parameters!
Gruß
Armin