Hallo Boris,ich halte Hans-Werners Vorschlag für besser, das Datum jeweils nur beim Speichern des Dokuments in eine Zelle zu schrieben, anstatt es bei jedem Öffnen neu zu holen. Abgesehen davon dürfte der Fehler (von dem wir ja offenbar noch nicht recht wissen, wodurch er ausgelöst wird) ja dann wohl nicht mehr auftauchen, es ist ja dann eine ganz andere Situation. Der wait-Befehl, den Thomas vorschlug, bedeutet, dass das Programm 1000 Millisekunden warte, bevor es weiterläuft; das macht man, um länger dauernde parallele Prozesse abzuwarten. Daher musstest du nun 1 Sekunde länger warten. In meiner Praxis hat da übrigens immer wait(100) ausgereicht, was man normalerweise nicht mehr bemerkt, die Rechner sind ja jetzt schneller als früher.
Gruß Gerhard Am 04.06.2021 um 21:55 schrieb Werner Tietz:
Hallo Am 04.06.21 um 09:52 schrieb Boris Kirkorowicz:Hallo, Am 03.06.21 um 16:24 schrieb Thomas Krumbein:Hei Boris, bau mal ne wait() Funktion ins Makro ein. Benutzerdefinierte Funktionen werden sehr früh aufgelöst, kann sein, dass manche Dokumentobjekte zu dem Zeitpunkt noch nicht verfügbar sind. Ich würde mal mit wait(1000) nach der Zeile oSheet = ThisComponent() beginnen und austesten, evt. dann den Wert reduzieren.Danke, habe ich gemacht. Leider ohne Erfolg: die Fehlermeldung erscheint weiterhin, und das Datum wird wie bisher zunächst auf den 31.12.1899 gesetzt und erst nach [Strg]+[Shift]+[F9] auf das letzte Speicherdatum. Neu ist jetzt, dass nach dem Drücken der Tastenkombination für die unbedingte Neuberechnung etwa eine Sekunde vergeht, bis auf das Speicherdatum gewechselt wird.Das pauschale `wait(…)` ist keine gute Idee, wie wärs mit: ``` Function ChangedOn() As Variant Dim oSheet As Object Dim ChgDate As Object On Error resume Next 'hier wird die Fehlermeldung abgefangen. doc = ThisComponent() ChgDate = doc.DocumentProperties.ModificationDate' ChgDate ist leer, wenn das Dokument noch nie gespeichert wurde. In diesem Fall CreationDate nutzenIf ChgDate.Year = 0 Then ChgDate = oSheet.DocumentProperties.CreationDate End If With ChgDateChangedOn = dateSerial( .Year, .Month, .Day) + TimeSerial( .Hours, .Minutes, .Seconds)End With End Function ```trotzdem musst du ggf. die Neuberechnung nach dem Öffnen mit `strg+shift+enter` erzwingen.nb: ich hab das noch ergänzt auf die Anzeige des vollen Datum-Zeitstempels, passe daher das Zellformat entsprechend an.Am 03.06.2021 um 14:14 schrieb Boris Kirkorowicz:Hallo, um das Speicherdatum automatisiert in eine Zelle zu bekommen, habe ich folgendes Makro (nicht von mir, sondern gefunden gekriegt) in mein Calc-Dokument eingebaut:REM ***** BASIC ***** Function ChangedOn() As Date Dim oSheet As Object Dim ChgDate As Variant oSheet = ThisComponent() ChgDate = oSheet.DocumentProperties.ModificationDate' ChgDate ist leer, wenn das Dokument noch nie gespeichert wurde. In diesem Fall CreationDate nutzenIf ChgDate.Year = 0 Then ChgDate = oSheet.DocumentProperties.CreationDate End If ChangedOn = DateSerial(ChgDate.Year, ChgDate.Month, ChgDate.Day) End FunctionDieses Makro nutze ich, indem ich es in der gewünschten Zelle mit =CHANGEDON() aufrufe. Beim Öffnen des Tabellendokuments begegnet mir die Meldung:Nach manuellem Aktualisieren mit [Strg]+[Shift]+[F9] ist allerdings dasBASIC-Laufzeitfehler. Eigenschaft oder Methode nicht gefunden: DocumentProperties.Speicherdatum in der Zelle korrekt. Für die Funktion scheint es nichtdirekt schädlich zu sein, aber es stört natürlich, wenn man erst einmalzwei Fenster (die Meldung und das Makro-Fenster) schließen muss, bevor man arbeiten kann, und es macht keinen guten Eindruck, wenn man die Tabelle weiterreicht. Was bedeutet diese Meldung? Wie lässt sich das abstellen?
-- Liste abmelden mit E-Mail an: users+unsubscribe@de.libreoffice.org Probleme? https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/ Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de Listenarchiv: https://listarchives.libreoffice.org/de/users/ Datenschutzerklärung: https://www.documentfoundation.org/privacy