❤️ Helfen Sie noch heute, unser LibreOffice Forum zu erhalten! ❤️
Unterstützen Sie das LibreOffice-Forum und helfen Sie uns, unser Ziel für 2025 zu erreichen!
🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Änderungsabfrage
Änderungsabfrage
Hallo Forum,
folgende Frage, auf die ich bisher keine Antwort gefunden habe: Mit welcher Funktion kann ich abfragen, ob das Arbeitsblatt in dieser Sitzung geändert wurde. Im Prinzip ist es die Funktion(das Bit), welche die "speichern" Anfrage beim Schließen auslöst. Ich möchte damit eine Zellenfunktion erstellen,
die etwa so lautet: "Wenn (geändert) dann (Heute) sonst nichts", d.h. bei einer Änderung das heutige Datum in diese Zelle eintragen . Meine LO Version ist 4.2.4.2.
MfG OldIron
folgende Frage, auf die ich bisher keine Antwort gefunden habe: Mit welcher Funktion kann ich abfragen, ob das Arbeitsblatt in dieser Sitzung geändert wurde. Im Prinzip ist es die Funktion(das Bit), welche die "speichern" Anfrage beim Schließen auslöst. Ich möchte damit eine Zellenfunktion erstellen,
die etwa so lautet: "Wenn (geändert) dann (Heute) sonst nichts", d.h. bei einer Änderung das heutige Datum in diese Zelle eintragen . Meine LO Version ist 4.2.4.2.
MfG OldIron
Re: Änderungsabfrage
Hallo OldIron,
eine Funktion ist mir dafür nicht bekannt. In einem Makro kannst Du das mit ThisComponent.IsModified abfragen.
Ggf. kannst Du Dir damir eine eigene Funktion schreiben. Sagen wir, die heißt "MODIFIED()" und gibt TRUE oder FALSE zurück.
Wenn Du Dir damit selbst eine Funktion schreiben willst, bitte folgendes beachten:
Grüße
Gerhard
eine Funktion ist mir dafür nicht bekannt. In einem Makro kannst Du das mit ThisComponent.IsModified abfragen.
Ggf. kannst Du Dir damir eine eigene Funktion schreiben. Sagen wir, die heißt "MODIFIED()" und gibt TRUE oder FALSE zurück.
Wenn Du Dir damit selbst eine Funktion schreiben willst, bitte folgendes beachten:
- Wenn Dein Sheet beim Öffnen automatisch neu kalkuliert wird, ist ThisComponent noch nicht bekannt. Die Funktion wird dann mit einem Fehler abbrechen. Mit geeigneter Fehlerbehandlung läßt sich das umgehen.
- Wenn Du an Deinem Sheet etwas änderst, wird nicht zwangsläufig auch die Zelle, in der Dein MODIFIED steht, neu berechnet. Es werden nur solche Zellen neu berechnet, die mit der geänderten Zelle in Verbindung stehen. Du kannst z.B. =MODIFIED(JETZT()) nutzen. JETZT() wird nämlich immer neu berechnet, und wenn es Argument von MODIFIED ist, wird letzteres dann auch neu berechnet. Es st nicht nötig, denn Wert von JETZT() innerhalb von MODIFIED irgendwie zu benutzen.
Grüße
Gerhard
LibreOffice 5.4.6.2 / Windows 10 64Bit / WIndows 10 32Bit
Re: Änderungsabfrage
Hallo egsel, hallo lessger,
vielen Dank für eure Antworten. Leider entsprechen sie nicht dem, was ich suche. Unter Excel hatte ich dies mit einem Makro gelöst. Da ich aber ohne Makro
auskommen will und LO ein offenes Programm ist, hoffe ich, das jemand tief genug in der Materie ist, um diese Variable zu kennen und sie abzufragen.
Schlimmstenfalls muß ich versuchen, das VBA Makro zu konvertieren.
MfG OldIron
vielen Dank für eure Antworten. Leider entsprechen sie nicht dem, was ich suche. Unter Excel hatte ich dies mit einem Makro gelöst. Da ich aber ohne Makro
auskommen will und LO ein offenes Programm ist, hoffe ich, das jemand tief genug in der Materie ist, um diese Variable zu kennen und sie abzufragen.
Schlimmstenfalls muß ich versuchen, das VBA Makro zu konvertieren.
MfG OldIron
Re: Änderungsabfrage
Hallo OldIron,
die "Variable" (genaugenommen ist es eine Methode) ist eben ThisComponent.IsModified. Die kannst Du allerdings nicht aus Calc, sondern nur aus einem Macro abfragen.
Grüße
Gerhard
die "Variable" (genaugenommen ist es eine Methode) ist eben ThisComponent.IsModified. Die kannst Du allerdings nicht aus Calc, sondern nur aus einem Macro abfragen.
Grüße
Gerhard
LibreOffice 5.4.6.2 / Windows 10 64Bit / WIndows 10 32Bit
Re: Änderungsabfrage
Hallo lessger,
dann bleibt mir nichts weiter übrig,als das Makro zu schreiben.
Nochmal vielen Dank.
Mfg OldIron
dann bleibt mir nichts weiter übrig,als das Makro zu schreiben.
Nochmal vielen Dank.
Mfg OldIron
Re: Änderungsabfrage
Hallo OldIron,
das Makro (als Funktion) ist eigentlich ganz simpel (Aufruf mit =MODIFIED() aus Calc):
Da hast Du aber noch ein Problem mit der Neuberechnungslogik von Calc. Das Macro muß ja nach einer Änderung irgendwo im Sheet aufgerufen werden (Neuberechnung), damit eine Änderung von IsModified den entsprechenden Zellwert ändert. Das ist aber nicht automatisch der Falle, da nach einer Änderung nur abhängige Zellen neu berechnet werden. Das kannst Du umgehen, indem Du den Aufruf mit =MODIFIED(JETZT()) machst. JETZT() wird nämlich immer neu berechnet, es sei denn, automatische Neuberechnung ist abgeschaltet.
Grüße
Gerhard
das Makro (als Funktion) ist eigentlich ganz simpel (Aufruf mit =MODIFIED() aus Calc):
Code: Alles auswählen
Function Modified() As Boolean
'
' Rückgabewert:
' TRUE wenn das Sheet seit dem letzten Save geändert wurde
' FALSE wenn nicht oder im Fehlerfall
'
' Wenn das Makro beim Öffnen automatisch ausgeführt wird, ist ThisComponent noch nicht gesetzt
' In diesem Fall wird False zurückgegeben
On Error Goto NoComponent
Modified = ThisComponent.isModified
Exit Function
NoComponent:
Modified = False
End Function
Grüße
Gerhard
Zuletzt geändert von lessger am Fr 31. Okt 2014, 15:20, insgesamt 1-mal geändert.
LibreOffice 5.4.6.2 / Windows 10 64Bit / WIndows 10 32Bit
Re: Änderungsabfrage
Hallo lessger,
Danke für Deinen Tip. Um ihn zu verwerten brauche ich noch einige Zeit, da ich mich erst wieder in die Materie einarbeiten muß. Mein VBA Makro ist schon
-zig Jahre alt und ich ein paar Jahre im Ruhestand. Da dauert das Lernen etwas länger.
MfG OldIron
Danke für Deinen Tip. Um ihn zu verwerten brauche ich noch einige Zeit, da ich mich erst wieder in die Materie einarbeiten muß. Mein VBA Makro ist schon
-zig Jahre alt und ich ein paar Jahre im Ruhestand. Da dauert das Lernen etwas länger.
MfG OldIron
An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.