Wenn Du jetzt Dein Ansinnen zuende denkst, dann wirst DU erkennen, dass das eine Endlosschleife erzeugen und eine Codekollision würde.
Nee, wo soll es zu einer Kollision kommen, außer der Nutzer verursacht sie selbst durch unüberlegten Formeleinsatz.
Das beste Gegenbeispiel ist eine benutzerdefiniete Funktion die auf einem nicht aktiven Tabellenblatt Werte schreibt, beispielsweise:
Code: Alles auswählen
Function schreiben()
ThisComponent.Sheets(1).getCellRangeByName("B1").Value = 4
End Function
wird diese Funktion im Tabellenblatt mit Index ungleich 1 in einer Zelle aufgerufen greift sie problemlos schreibend auf die Zelle B1 des Blattes mit dem Index Eins zu und trägt eine 4 ein, diese 4 ist nun durch Verknüpfung auch in jede beliebige Zelle des aktiven Blattes zu bekommen, was ja angeblich Deiner Meinung nach zur 'Katastrophe' führen sollte, i.S.:
- die Funktion ändert eine Zelle durch Nebeneffekte
- diese Änderung der Zelle löst eine Neuberechnung aus
- Die Neuberechnung löst eine Berechnung der Funktion aus
- die Funktion ändert eine Zelle durch Nebeneffekte
- ...
tut es aber nur bei unüberlegter Verwendung.
Da solche Art der Zirkelbezüge auch mit normalen Formeln nur durch überlegten Einsatz von Formeln vermieden werden können, ist auch das Argument als Solches hinfällig.
Ebenfalls unsinnig ist Deine Begründung angesichts der Tatsache das z.B. eine Formel:
=ZELLE("FILENAME")
beispielsweise liefert:
'file:///C:/Dokumente und Einstellungen/internet/Desktop/funktionstest.ods'#$xxx
wobei xxx der Name der aktiven Tabelle ist. Nun kann ich diesn Namen aber problelos mit einer benutzerdefinierten Funktion, die ich auf dem selben Tabellenblatt aufrufe ändern:
Code: Alles auswählen
Function schreiben2(x As String)
ThisComponent.CurrentController.ActiveSheet.setName(x)
End Function
und schon stimmt das Ergebnis von =ZELLE("FILENAME") nicht mehr, weil ja die formel nicht automatisch aktualisiert wird, ich das also ggf. zusätzlich in der benutzerdefinierten Funktion auslösen müßte.
Auch hier schert sich Calc überhaupt nicht an der potentiellen Schädlichkeit des Wirkens der benutzerdefinierten Funktion.
Kurzum - wenn ich das Ausgangsanliegen sehe, kann ich nur erkennen das es eine durchaus sinnvolle Funktionalität sein könnte.
Gruß
Stephan
[quote]Wenn Du jetzt Dein Ansinnen zuende denkst, dann wirst DU erkennen, dass das eine Endlosschleife erzeugen und eine Codekollision würde.[/quote]
Nee, wo soll es zu einer Kollision kommen, außer der Nutzer verursacht sie selbst durch unüberlegten Formeleinsatz.
Das beste Gegenbeispiel ist eine benutzerdefiniete Funktion die auf einem nicht aktiven Tabellenblatt Werte schreibt, beispielsweise:
[code]Function schreiben()
ThisComponent.Sheets(1).getCellRangeByName("B1").Value = 4
End Function[/code]
wird diese Funktion im Tabellenblatt mit Index ungleich 1 in einer Zelle aufgerufen greift sie problemlos schreibend auf die Zelle B1 des Blattes mit dem Index Eins zu und trägt eine 4 ein, diese 4 ist nun durch Verknüpfung auch in jede beliebige Zelle des aktiven Blattes zu bekommen, was ja angeblich Deiner Meinung nach zur 'Katastrophe' führen sollte, i.S.:
[quote]- die Funktion ändert eine Zelle durch Nebeneffekte
- diese Änderung der Zelle löst eine Neuberechnung aus
- Die Neuberechnung löst eine Berechnung der Funktion aus
- die Funktion ändert eine Zelle durch Nebeneffekte
- ...[/quote]
tut es aber nur bei unüberlegter Verwendung.
Da solche Art der Zirkelbezüge auch mit normalen Formeln nur durch überlegten Einsatz von Formeln vermieden werden können, ist auch das Argument als Solches hinfällig.
Ebenfalls unsinnig ist Deine Begründung angesichts der Tatsache das z.B. eine Formel:
=ZELLE("FILENAME")
beispielsweise liefert:
'file:///C:/Dokumente und Einstellungen/internet/Desktop/funktionstest.ods'#$xxx
wobei xxx der Name der aktiven Tabelle ist. Nun kann ich diesn Namen aber problelos mit einer benutzerdefinierten Funktion, die ich auf dem selben Tabellenblatt aufrufe ändern:
[code]Function schreiben2(x As String)
ThisComponent.CurrentController.ActiveSheet.setName(x)
End Function[/code]
und schon stimmt das Ergebnis von =ZELLE("FILENAME") nicht mehr, weil ja die formel nicht automatisch aktualisiert wird, ich das also ggf. zusätzlich in der benutzerdefinierten Funktion auslösen müßte.
Auch hier schert sich Calc überhaupt nicht an der potentiellen Schädlichkeit des Wirkens der benutzerdefinierten Funktion.
Kurzum - wenn ich das Ausgangsanliegen sehe, kann ich nur erkennen das es eine durchaus sinnvolle Funktionalität sein könnte.
Gruß
Stephan