Gibt es eine Möglichkeit eine bestimmte Zelle bzw das ganze Dokument zeitabhängig automatisch neu zu berechnen ohne F9?

Hallo alle zusammen,
ich beschäftige mich nun seit ein paar Tagen damit mir einen Terminplan in LibreOffice Calc zu erstellen. Was das eintragen mit Zeiten und allem angeht läuft das echt gut. Zudem habe ich neben den jeweiligen Zeiten zu denen ich Termine eintrage eine Countdownfunktion eingefügt. Jetzt das Problem wenn ich mir das ganze auf einem zweiten Bildschirm anzeigen lassen will tickt der Countdown nur, wenn ich wieder in das Dokument tabbe und F9 drücke. Ist es irgendwie möglich, dass das Dokument sich solange es geöffnet ist alle zB 10 sec selbst aktualisiert (zB über eine Schaltfläche die dauerhafte Aktualisierung aktiviert oder ähnliches)?

Ich wäre dankbar für jede Hilfe auch wenn das nur ein reines Komfortproblem ist.

Mit “bestimmte Zelle” geht das nicht, jedenfalls nicht wörtlich, weil die Berechnung einer Zelle immer auch die Berechnung aller “dirty” markierten Zellen einschließt, von denen die jeweilige Formel irgendwie (Umwege möglich!) abhängt. Formeln, die volatile Funktionen verwenden, werden ohnehin bei jedem Änderungsereignis aufgefrischt. F9 berechnet aber nicht immer alles neu, sondern im Sinne obiger Erklärung die (im technischen Sinne) sichtbaren Zellen. Eine vollständige Neuberechnung kann man mitr Ctrl+Shift+F9 erzwingen.

Hallo,

ja - es gäbe einen Trick, der allerdings von hinten durch die Brust ins Auge geht. Die Idee wäre, den vorhandenen Timer zum Aktualisieren der Verknüpfung zu externen Daten zu missbrauchen und dadurch eine Neuberechnung zu triggern.

Festlegungen für die folgende Beschreibung:

  • Datei Master.ods sei die Datei die den Timer enthält und stets neu berechnet werden soll (In meinem Test habe ich da einfach die Funktion =NOW() in die Zelle A1 reingeschrieben)
  • Die Datei MasterTrigger.ods ist eine leere Datei in der ein benannter Zellbereich DUMMY existiert (in meinem Test habe ich einfach den Bereich A1:B1 als DUMMY benannt)

Nun geht man wie folgt vor:

  • Öffne Master.ods
  • Selektiere eine Zelle, in der (und den umgebenden Zellen, wie sie sich aus dem Zellbereich DUMMY ergeben) definitiv nie Daten stehen werden
  • Wähle Tabelle -> Verknüpfung zu externen Daten... und selektiere im Feld URL die Datei MasterTrigger.ods. Nach Auswahl der Datei sollte der benannte Bereich DUMMY erscheinen. Selektiere diesen
  • Setze den Haken bei [x] Aktualisieren alle und gib den für Dich passenden Wert in Sekunden an (z.B. 15)
  • Klick auf OK

Nun aktualisiert sich das Sheet alle wie angegebenen Sekunden automatisch (sofern Daten -> Berechnen -> [x] Automatisch gesetzt ist).

Wenn Dir das - was ich verstehen könnte - zu krude vorkommt, bleibt Dir nur selber ein Makro zu schreiben.

Anmerkung(en)

  • Falls Du nachträglich die Aktualisierungszeit ändern wolltest, dann ginge das über: Bearbeiten -> Verknüpfungen zu externen Dateien... -> Button: Ändern
  • Die hier verwendeten Namen sind natürlich alle Schall und Rauch

Getestet mit LibreOffice:

Version: 6.3.4.2,Build-ID: 60da17e045e08f1793c57c00ba83cdfce946d0aa
CPU-Threads: 8; BS: Linux 4.12; UI-Render: Standard; VCL: kde5; 
Gebietsschema: de-DE (de_DE.UTF-8); UI-Sprache: de-DE, Calc: threaded

Ich hoffe dies hilft Dein Problem zu lösen / Deine Frage zu beantworten

Wenn die Antwort geholfen hat, Dein Problem zu lösen, dann klick bitte das kleine Häkchen (:heavy_check_mark:) direkt neben der Antwort (wird grün dabei).

Sehr gut! Funktioniert! Ich wäre da nie im Leben ohne HIlfe drauf gekommen. Ich bedanke mich recht herzlich.

Wenn es Dir geholfen hat, wäre es nett, das durch Anklicken des kleinen Häkchens (:heavy_check_mark:) direkt neben der Antwort (wird grün dabei) kenntlich zu machen. Vielen Dank …

Hmm, den Vorschlag von @anon73440385 finde ich ganz spannend, aber das geht dann doch auch ein bisschen einfacher:

Wenn man ein wenig Usercode schreibt, und inkauf nimmt, dass bei aktivierter timergetriggerter Neuberechnung immer eine kleine Basic Routine läuft, kann man es machen wie in diesem angehängten Beispiel, das natürlich auch einen in LibO verfügbaren Timer simuliert, indem es eine Funktion benutzt, die auf einen Hadwaretimer des Systems zurückgreift. Naja, man kann auch anders darüber sprechen.

Eine Möglichkeit zum Abschalten der zeitgetakteten Neuberechnung sollte man jedenfalls vorsehen, weil man sonst bei etwa nötigen Bearbeituung schlimme Überraschungen erleben kann. Mein Beispiel verwendet dafür einen Button, der auch in seinen Eigenschaften
a - die Buchführung macht, ober er als Ein- oder als Ausschalter wirken soll und
b- das Zeitintervall (in ms) enthält.
(Falls der Button flimmert liegt es daran, dass deine Version schin und noch den entsprechenden Bug hat. Wird demnächst behoben sein.)

Ein kleiner Scherz: Die Information, die von der Formel in A10 benutzt wird, ist hinter dem Button versteckt.

NB: Im Basic-Kontext, und in diesem Fall deshalb auch bei der Buttonbeschriftung bleibe ich immer bei Englisch.

@Lupp - super Lösung. Kannst Du mir Basic Laien noch sagen, was es mit pEvent.Source.Model auf sich hat. Das fällt für mich ein wenig vom Himmel und dahinter scheinen sich ja auch die 1500 ms zu verstecken.

Sub, die durch Ereignisse aufgerufen werden, sollen gewisse Besonderheiten des Ereignisses auswerten können. Deshalb müssen sie bereit sein, einen entsprechenden Parameter zu akzeptieren. War das Ereignis z.B. ein Click of ein Toolbarelement, wird dem Ereignisparameter eine Ganzzahl übergeben, die Information über die gedrückten Modifikatiostasten enthält. Bei einem Buttonclick z.B. wird ein Objekt übergeben, das im wesentlichen nur senerseits das Objekt .Source enthält. Dieses ist zunächst als Formularelement präsent, gibt aber über seine .Model Eigenschaft auch Zugriff auf die Eigenschaften, die man im Editor des “eigentlichen Knopfes” sieht, also z.B das .Label.
Das eigentlich auch sehr nützliche .Tag wird leider (auch Im Englischen) im Editor mit irgendeinem blöd “lokalisierten” Namen angezeigt, z.B. “Additional Information”.

Ach - jetz verstehe ich. Du greifst damit auf die Properties des Controls zu (und das ahnend habe ich dann auch die 1500 in Zusatzinformationen gefunden). Danke …