Alle Komponenten bei Formular Abriss rechnen - Danach nicht mehr automatisch

Hallo,

gibt es eine Möglichkeit, dass beim Abriss von einem Formular alle Komponenten EINMALIG neu gerechnet werden? Und danach nur auf Verlangen bestimmte Komponenten berechnet werden?

Hintergrund:
Ich möchte gerne ein Formular schreiben, dass bestimmte Inhalte von einer Mutterdatei erhält. Dort sind zum Beispiel Bearbeiter hinterlegt.
Wenn nun das Formular abgerissen wird, hätte ich gerne, dass alle Bearbeiter übernommen aus der Mutterdatei.
Danach würde ich aber gerne diese nur noch auf Verlangen neu gerechnet haben. (Aber halt nicht alles. Deswegen reicht die Abfrage am Anfang nicht aus)

Es geht mir um die zukunftsorientierung des Formulars. Wenn nämlich mal Bearbeiter entfernt werden oder neue hinzugefügt werden, hätte ich gerne dass sich alle neuen Abrisse der Formulars aktualisieren. Die alten Abrisse sollten aber weiterhin ihre Daten behalten. Deswegen wäre es gut wenn die dann nicht neugerechnet werden. Damit archivrtd dateien auch später noch funktioneren.

Jemand eine Idee?

Gruß

Re: Alle Komponenten bei Formular Abriss rechnen - Danach nicht

#12516 On 26 Februar, 2018 13:28 bauart said,

Okay bin nun schon ein gehöriges Stück weiter.

Nächster Härtetest.

Und zwar funktioniert die Funktion einwandfrei. An einer Stelle jedoch nicht. Und zwar versuche ich nun das Logo auch über diese Funktion zu aktualisieren.
Hierbei funktioniert das ganze nicht. Kann es sein, dass SetzeZelle() nicht mit Bildern arbeiten kann?

Es befindet sich nämlich in der Mutterdatei nun in einer Zelle von einem Rechenblatt das Logo als Bild. (PDF)
Und das möchte ich per SetzeZelle() nun im abgerissenen Formular einfügen.

Klappt leider nicht. Die Funktion läuft nie durch und auch der Wert wird nie auf 0 gesetzt.

Re: Alle Komponenten bei Formular Abriss rechnen - Danach nicht

#12517 On 26 Februar, 2018 18:24 Thomas Kaegi said,

Hallo Alex

Mit der SetzeZelle-Funktion geht das nicht. Die kann nur Werte einsetzen!

Wenn sich das Logo im Dokument "Mutter.rtd" in Zelle A1 im Rechenblatt "R Logo" befindet und nicht unter Tag ändert, dann löst folgende Formel das Problem.

Wenn(Dokumentdatum=Heute;'Mutter.rtd'!R Logo!$A$1)

So wird das Logo nur am Tag des Formularabrisses aktualisiert, danach nicht mehr. Mit Vorteil sollten die Quell- und die Zielzelle die gleichen Dimensionen haben und das Logo bei Änderungen die Proportionen beibehalten.

>>>>>>> NACHTRAG: Sorry, aber da habe ich offenbar gestern Abend schlecht überlegt und schlecht getestet. Das kann so nicht funktionieren! Die Zelle A1 wird ja nicht eingefroren, sondern am nächsten Tag wieder gelöscht. Für einen gangbaren Weg siehe nächste Antwort.

Freundliche Grüsse
Thomas

Re: Alle Komponenten bei Formular Abriss rechnen - Danach nicht

#12518 On 27 Februar, 2018 13:09 Thomas Kaegi said,

Hallo Alex

Folgende Anordnung funktioniert nicht nur für das Logo, sondern auch für alle übrigen Daten:

Platziere alle beim Abreissen einzufrierenden Daten im Formularblock in einem Rechenblatt, für das du in der Rechenblattinformation in der Tafel "Allgemein" die Option "Nur auf Verlangen neuberechnen" aktivierst. Zudem wählst du alle Rechenblattzellen aus, und aktivierst den Schutz der Zellen im Menü "Extras" und schliesslich schützest du das Dokument. So bleibt der ganze Inhalt dieses Rechenblatts nach dem Abriss geschützt und kann von dort per Formel an andere Orte des Dokumentes geholt werden. Ich sehe im Moment keine andre Möglichkeit, die mit dem Logo funktionieren würde.

Wenn allerdings im Mutterdokument etwas ändert, so muss der Schutz im Formularblock aufgehoben, der Inhalt des Rechenblattes neu berechnet und schliesslich der Schutz wieder aktiviert werden.

Natürlich hat das den Nachteil, dass bei Änderungen im Mutterdokument alle abhängigen Formularblöcke so nachgeführt werden müssen. Das liesse sich wohl ggf. mit einem AppleScript automatisieren.

Gruss, Thomas

Re: Alle Komponenten bei Formular Abriss rechnen - Danach nicht

#12519 On 27 Februar, 2018 13:18 bauart said,

Hallo Thomas,

Die SetzeZelle() Funktion kann doch Bilder und Zeichnungen setzen.
Habe beides heute nochmal getestet und hat dann einwandfrei geklappt.
Ich habe die Bilder oder einmal eine Zeichnung in eine Zelle eines Rechenblatts getan.

Wenn man dann per SetzeZelle diese als Wert nimmt, funktioniert das hervorragend.

Das mit Auf Verlangen Berechnen hatte ich auch überlegt aber fand es dann auch schade, dass man alle Formulare manuell nachberechnen muss. Ich möchte so viel es geht auf AppleScript verzichten, weil man dann immer anfälliger ist.

Die Lösung mit den 1en finde ich genial.
So kann ich nämlich auch sehr einfach einen Knopf in dem Dokument platzieren wodurch man manuell die Mutterinformationen nachladen kann. Wenn man zum Beispiel ein altes Dokument nochmal verwenden möchte.

Das funktioniert jetzt gerade super gut alles.

Vielen Dank.

Re: Alle Komponenten bei Formular Abriss rechnen - Danach nicht

#12525 On 7 März, 2018 22:01 Thomas Kaegi said,

Hallo Alex

Du hast Recht. SetzeZelle-Befehle können auch kombiniert werden, wenn bei einem der Befehle ein Bild eingesetzt wird. Ich hatte das bei meiner vorangehenden Antwort offenbar nicht richtig getestet und daraus den falschen Schluss gezogen. Folgende Formel ist also z.B. auch möglich, wenn Zelle C1 ein Bild enthält :

Wenn(B1;SetzeZelle(0;B1)&SetzeZelle(C1;C2))

Die Formel kopiert das Bild in Zelle C1 in die Zelle C2 und sorgt dank der Verriegelung mit dem Wert in Zelle B1 dafür, dass das nur genau ein Mal passiert, wenn die Zelle B1 auf den Wert 1 gesetzt wurde. In deinem Fall könnte noch zusätzlich die Bedingung gelten, dass das nur passiert, nachdem das Dokument vom Formularblock abgerissen wurde.

Gruss, Thomas

Re: Alle Komponenten bei Formular Abriss rechnen - Danach nicht

#12510 On 22 Februar, 2018 18:49 Thomas Kaegi said,

Hallo Alex

Folgende Konstruktion macht, was ich glaube, dass du haben möchtest.

"Mutter.rtd" enthält in einem "Rechenblatt 1" in Spalte A eine Liste mit Namen.

Der Formularblock enthält in einem Rechenblatt in Zelle B1 den Wert 1 und in Zelle C1 die Formel

… mit der Erweiterung "Martin's Power Functions":
Wenn(Und( NICHT IstFormular;B1);SetzeZelle(0;B1)&KopiereBereich('Mutter.rtd'!Rechenblatt 1!$A:$A;A:A))

… ohne die Erweiterung:
Wenn(Und(Rechts(Dokumentname;3)='rtd';B1);SetzeZelle(0;B1)&VSuchlauf('Mutter.rtd'!Rechenblatt 1!$A$1:$A$100;1;;SetzeZelle(LfdZelle;A:A;LfdIndex)))

Im Formularblock wird also wegen der Wenn-Bedingung gar nichts gerechnet. Im von diesem Formularblock abgerissenen Dokument wird die Formel dagegen berechnet. Als erstes wird aber der Wert der Zelle B1 auf 0 gesetzt, so dass die Wenn-Bedingung danach nie mehr erfüllt ist und die Formel somit nach dem Abriss nur genau 1 x berechnet wird. Der Rest der Formel kopiert den Inhalt der Spalte A des "Mutter-Dokuments" in die Spalte A des abgerissenen Dokuments, bzw. bei der zweiten Formel nur die ersten 100 Zellen.

Gruss, Thomas

Re: Alle Komponenten bei Formular Abriss rechnen - Danach nicht

#12515 On 26 Februar, 2018 11:31 bauart said,

Also Thomas,

ich habe diese Frage gepostete mit der Erwartung, dass es hierfür nun wirklich keine Lösung gibt :D

Und jetzt kommst du daher mit einer so genialen und einfachen Lösung für mein Problem. Vielen Dank! Genau sowas habe ich gesucht.
Vor allem auch ohne die PowerFunctions, weil wir die leider nicht besitzen.

Vielen Dank.

Gruss