Gespensterformel

Hallo zusammen,

Probiert das :

Rechenblatt R1 :

Setzt in der Zelle A1 die Formel Knopf('K';SetzeZelle(B1+1;B1)) ein, in A2 die Formel Knopf('K';SetzeZelle(B2+1;B2))
usw.

Die Knöpfe funktionnieren.

Dann in C1 oder in einem Knopf :
VSuchlauf(A1:A100;1;;SetzeZelle('';A1:A100;LfdIndex))

Die Knöpfe in A:A werden wie erwartet gelöscht ; aber wenn ich dann in einer Zelle der Spalte A klicke, sehe ich noch immer in der Formelpalette die "Gespensterformel" Knopf('K';SetzeZelle(B1+1;B1)) usw., die natürlich nicht mehr funktionniert ! Bekommt ihr das gleiche Ergebnis ?

Verstehe nicht, was passiert.

RT 6.5.2 MacOS 10.7.5

Grüsse,

jacques

Re: Gespensterformel

#11755 On 21 November, 2014 19:04 Storch Bernhard said,
Hallo Jacques,

Ragtime kann per Formel offensichtlich nur Zellinhalte außer den in den Zellen enthaltenen Formeln löschen. Wahrscheinlich ist das manchmal gut und manchmal unerwünscht?

Mit freundlichem Gruß

Bernhard Storch
Kleinsachsenheimer Str. 45
D-74321 Bietigheim-Bissingen

LEHRERoffice für effektives Arbeiten
PhysikBits für ein fehlerfreundliches Lernen
ViT für Mathe für individuelles Lernen, Üben und Testen

Re: Gespensterformel

#11756 On 21 November, 2014 19:18 Thomas Kaegi said,

Hallo Jacques

Ja, ich kann das Verhalten auch unter OS X 10.9.5 reproduzieren.

Wie Bernhard Storch bereits sagte: RagTime löscht mit dem Befehl "SetzeZelle" nur den Wert, nicht aber die in der Zelle enthaltene Formel. Das gilt nicht nur für Formeln mit der Funktion "Knopf".

Tatsächlich ist die Knopf-Formel in den gelöschten Zellen aber noch enthalten. Wenn du den Befehl "Alles rechnen" ausführst sind alle Knöpfe wieder da.

Du kannst ein ähnliches Verhalten auch so zeigen:
Setze in Zelle A1 im Formelfenster(! - nicht als Wert in der Zelle selbst!) einfach eine 1 und in Zelle A2 die Formel "A1+1". Jetzt zeigen die beiden Zellen die Werte 1 und 2. Lösche nun die Zellen in gleicher Weise wie in deinem Beispiel. Die Zelle A1 scheint jetzt leer und die Zelle A2 zeigt den Wert 1. "Alles rechnen" stellt den ursprünglichen Zustand wieder her.

Mit freundlichem Gruss, Thomas

Re: Gespensterformel

#11757 On 21 November, 2014 20:45 jacques villars said,

Danke Bernhard und Thomas,

Ich soll also wie folgt vorgehen :

1. mit VSuchlauf die Knöpfe löschen, dann
2. eine leere Zelle in die entsprechenden Zellen "nach oben" kopieren

Die Knöpfe direkt inkremental zu Löschen sei mühselig

nochmals freundliche Grüsse,

jacques

Re: Gespensterformel

#11758 On 21 November, 2014 20:51 Thomas Kaegi said,

Hallo Jacques

Ich soll also wie folgt vorgehen :
1. mit VSuchlauf die Knöpfe löschen, dann
2. eine leere Zelle in die entsprechenden Zellen "nach oben" kopieren

Mir scheint, da könnest du Schritt 1 weglassen. Wenn du eine leere Zelle unter deinen "Formelzellen" markierst und am mittleren Griff nach oben ziehst, dann wird sowohl der Knopf wie auch die Knopfformel gelöscht.

Gruss, Thomas

Re: Gespensterformel

#11759 On 21 November, 2014 21:15 jacques villars said,

Jawohl, aber für jede Knopfformel sollte ich ein Warnungfenster schliessen ! RagTime betrachtet hier eine Knopfformel als eine Komponente ! Wenn es um hunderte von Knopfformeln sich handelt wäre es ein wenig mühsam…
jacques

Re: Gespensterformel

#11760 On 22 November, 2014 10:29 Thomas Kaegi said,

Hallo Jacques

Du hast Recht. Aber ich habe trotzdem eine Lösung für dich - per AppleScript. Allerdings musst du natürlich die Begriffe "Bearbeiten" und "Löschen" auf dein französisches RagTime anpassen. Ich bin bei dieser Lösung davon ausgegangen, dass der Menübefehl "Löschen" nicht nur den Wert der ausgewählten Zellen löscht, sondern auch die darin enthaltene Formel, und dies ohne die lästige Frage, ob die in der Zelle enthaltene Komponente gelöscht werden solle.

Voraussetzung für die Anwendung von GUI-Scripting ist, dass in den Systemeinstellungen/Bedienungshilfen der Zugriff auf die Menübefehle aktiviert wird. Bei OS X 10.7.5 ist das noch einfach: Ganz unten den "Zugriff für Hilfsgeräte aktivieren". Unter OS X 10.9.5 ist es am einfachsten, man führt das Script einmal aus, dann wird man direkt zur richtigen Einstellungstafel geführt.

Hier das Script:

tell application "RagTime 6.5"
select range "A1:A100" of table "Rechenblatt 1" of document 1
end tell
activate application "RagTime 6.5"
tell application "System Events"
tell process "RagTime"
click menu item "Löschen" of menu 1 of menu bar item "Bearbeiten" of menu bar 1
end tell
end tell

Das GUI-Script konnte ich dank dem ausgezeichneten AppleScript-Buch von Detlef Schulz zusammenstellen.

Freundliche Grüsse
Thomas

Re: Gespensterformel

#11761 On 22 November, 2014 11:46 Thomas Kaegi said,

Hallo Jacques

Es geht auch ohne GUI-Scripting mit folgendem AppleScript:

tell application "RagTime 6.5"
set i to 1
repeat while cell ("A" & i) of table "Rechenblatt 1" of document 1 is not empty
set cell ("A" & i) of table "Rechenblatt 1" of document 1 to ""
set i to i + 1
end repeat
end tell

Gib dem Script einen Namen, dann kannst du es mit einem Knopf aufrufen.

Freundliche Grüsse, Thomas

Re: Gespensterformel

#11762 On 22 November, 2014 12:42 jacques villars said,

Hallo Thomas,
Vielendank für deine Lösung, sie funktioniert vollkommen. Habe nur mit einfachem (nicht GUI) AppleScript probiert, mir genügt es ;-)
Herzliche Grüsse,

jacques

Re: Gespensterformel

#11763 On 22 November, 2014 12:54 jacques villars said,

…und mit GUI-AppleScript klappt es auch ! System-Events hatte ich noch nie benutzt…
Schönen Sonntag
jacques

Re: Gespensterformel

#11764 On 22 November, 2014 18:01 jacques villars said,

Hallo Thomas une Liste,

Beide Lösungen haben ihren Vorteil :

Die erste Lösung (GUI-AppleScript) funktionniert in Zellen mit Formel- Wert- und Komponenteinhalt.

Die zweite Lösung funktionniert nicht mit Komponenten, aber das Skript kann als RT-AppleScriptbefehl (Menü Extra) in RT Hilfsmittel gespeichert werden.

das Skript habe ich so gespeichert :

tell application "RagTime 6.5"
set i to X
--X ersetzen!
repeat while cell ("X" & i) of table "X" of document 1 is not empty
--X ersetzen!
set cell ("X" & i) of table "X" of document 1 to ""
--X ersetzen!
set i to i + 1
end repeat
end tell

Damit wird ein Editierfenster automatisch geöffnet und man kann das Skript leicht adaptieren.

Grüsse,

jacques