Myseriöses Verhalten bei CalculateAll
Verfasst: Mo, 26.11.2007 09:21
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:
Das Makro lautet:
PS3: Ich benutze OO Verson 1.1
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