Seite 1 von 1

Myseriöses Verhalten bei CalculateAll

Verfasst: Mo, 26.11.2007 09:21
von stbuerk
Hallo,
ich habe ein merkwürdiges Problem, das mit selbestbeschriebenen Funktionen und dem Befehl thiscomponent.calculateall zusammenhängt.

In Zelle F1 wird eine Zufallszahl erzeugt.
In Zelle F2 steht Quatsch(F1), wobei Quatsch eine einfache selbstgeschriebene Funktion ist.
In Zelle F3 steht Quatsch(F2)
In Zelle F4 steht Quatsch(F3),
usw, etwa sechszig mal.

Zusätzlich habe ich ein Makro, das in die Zelle A1 den Wert 3 schreibt und den Befehl thiscomponent.calculateall enthält.

Wenn ich das Makro auslöse, passiert es sehr oft, dass in einer der F.. - Zellen anstatt einem Funktionsergebnis der Fehler Err. 522 "zirkuläre Referenz angezeigt wird". Allerdings: Es gibt gar keine zirkuläre Referenz, zudem ist die Iteration abgeschaltet. Das Makro und die Funktionen haben eigentlich gar nichts miteinander zu tun.

Wer hat eine Erklärung für diese merkwürdige Verhalten? Wie kann man sich vor so einem Fehler schützen?

Im Vorab Dank für Tipps und Hinweise

Stbuerk



PS1: Mein Funktion und das Makro scheinen sinnlos sein, ich habe diesen aber Fehler aus einer durchaus sinnvollen Anwendung mühsam herausdestilliert, bis nur noch der Fehler blieb.

PS2: Die Funktion lautet:

Code: Alles auswählen

function quatsch(s)
' erhöht letztlich nur s um den Wert 1
dim i 
for i = 1 to 1000 ' sinnlos - aber nötig, um den Fehler zu erzeugen
quatsch = s+1
next i 
end function

Das Makro lautet:

Code: Alles auswählen

sub machwas
thiscomponent.getsheets.getbyname("T").getcellrangebyName("A1").value = 3 ' sinnlos - aber nötig, um den Fehler zu erzeugen
thiscomponent.calculateall
end sub
PS3: Ich benutze OO Verson 1.1

Re: Myseriöses Verhalten bei CalculateAll

Verfasst: Di, 27.11.2007 12:27
von stbuerk
Hallo Gast,

Danke für die Antwort, aber ...

erstens: Da keine Iteration vorliegt, dürfte der Err 522 nicht gemeldet werden. Wo soll sich meine Formel denn auf sich selbst beziehen?

zweitens: Warum taucht der Fehler mal auf, mal nicht? Warum mal nach der zweiten Zahl, mal erst nach der dreissigsten Zahl, mal gar nicht? (Übrigens auch ohne Zufallszahl, an der kann es nicht liegen)

drittens: warum ziegt der Detektiv dann keine "zirkuläre Spur" an, sondern nur eine lineare?

viertens: warum verschwindet der Fehler, wenn ich die betr. Zelle neu berechne? Eine zikuläre Refernez ist entweder gegeben oder nicht!?

fünftens: Warum ich alles so eingestellt habe, soll nicht mein Geheimnis bleiben: Ich wollte den Fehler so in seiner isolierten Form darstellen, um ihn zu verstehen, damit ich ihn nachher in meiner konkreten Anwendung vermeiden kann.

sechstens: Ich gebe Dir Recht, dass das Wort "zudem" in meiner Frage irreführend war. Die Abschaltung der Itreation ist Voraussetzung für die Fehlermeldung - das wollte ich eigentlich sagen.


Wie gesagt, es wäre schön, wenn mir jemand beim Verständnis dieser Fehlermeldung auf die Sprünge helfen könnte.

MFG

stbuerk

Re: Myseriöses Verhalten bei CalculateAll

Verfasst: Do, 29.11.2007 15:34
von stbuerk
Das sind Tipps die mich weiterbringen und den Kackpunkt treffen, ich werde mich anhand Deiner Tipps nochmal genauer mit der Sache beschäftigen.
Vielen Dank!