Seite 1 von 1
Re: Listener in Calc entfernen
Verfasst: So, 12.02.2012 17:14
von Stephan
an Der von Dir geposteten Stelle steht wie man den Listener entfernt! Warum fragst Du das überflüssiger WEise hier?
Code: Alles auswählen
Sub RmvListener
CellRng.removeModifyListener(oListener)
End Sub
Gruß
Stephan
Re: Listener in Calc entfernen
Verfasst: So, 12.02.2012 18:42
von Stephan
Diese Routine kann ich als Event einfügen beim Schließen des Dokuments.
Nein. Höchstens kannst du sie dem Schließen-Event zuordnen, das Makro selbst versteht sich hier jedoch nicht als Event.
Wenn ich Sie aber ausführen möchte bekomme ich folgenden Fehler:
"BASIC Laufzeitfehler. Objektvariable nicht belegt".
Naja, dann wird halt eine Objektvariable nicht belegt sein weil LO nicht mit der DEklaration zurechtkommt.
Nimm statt:
die Deklaration:
oder:
Es muss also irgendwie anders gehen.
Nein.
GRuß
Stephan
Re: Listener in Calc entfernen
Verfasst: Mi, 15.02.2012 22:52
von balu
Hallo BastiL,
beide deiner Vorschläge ändern nichts:
Wo dran mag das wohl liegen?
In Sub RmvListener ist CellRng nicht bekannt. Wie kann ich da weitermachen?
Weder Stephan, noch ich, haben Glaskugeln mit Magischen fähigkeiten. Also ist nichts mit Hilfe.
Mein Makro sieht ähnlich aus wie im Link.
Ah ja!
Ähnlich ist nicht gleichzusetzen wie identisch, das sind zwei verschiedene Paar Schuh. Also würde ich dir dringend empfehlen eine Beispieldatei hier anzuhängen, denn nur so können wir hier nachschauen wo es bei dir hakt.
Aber eine Frage hätte ich da noch.
Hast Du auch die dementsprechenden Subs bei
- Extras
- Anpassen
-- Ereignisse
richtig zugeordnet?
Gruß
balu
Re: Listener in Calc entfernen
Verfasst: Mi, 15.02.2012 23:27
von balu
Hallo BastiL,
Diese Routine kann ich als Event einfügen beim Schließen des Dokuments.
Was meinst Du denn
ganz genau?
a)
Dokument wird geschlossen
b)
Dokument geschlossen
Gruß
balu
Re: Listener in Calc entfernen
Verfasst: Do, 16.02.2012 06:47
von Stephan
In Sub RmvListener ist CellRng nicht bekannt.
das ist mir vollens unverständlich da Du selbst ja den Code gepostet hast (
http://user.services.openoffice.org/en/ ... 45&t=30071) der CellRng ein Object zuweist:
und da dieser Code Bestandtei des Makros ist, welches den Listener registriert muß CellRng später auch existieren, sofern CellRng als Variable mit ausreichendem Gültigkeitsbereich registriert ist.
Wie kann ich da weitermachen? Was für Debugging-Möglichkeiten gibt es da?
Das waa man üblicherweise tut - die genaue Schreibweise von CellRng überprüfen um sicherzustellen das diese in:
und:
gleich ist, sowie die richtige DEklaration von CellRng nochmals prüfen.
Gruß
Stephan
Re: Listener in Calc entfernen
Verfasst: Do, 16.02.2012 08:38
von Karolus
Hallo
Soweit ich weiss***, wird 'olistener'
- a. mit der Methode .removeModifyListener nicht völlig entfernt, sondern man kann damit nur verhindern, in eine Endlosrekursion zu laufen, falls das per Listener aufgerufe Makro seinerseits Änderungen in 'CellRng' durchführt.
b. Muss man den Fehler mit 'on Error resume next' unterdrücken.
siehe Beispiel:
Code: Alles auswählen
Sub RmvListener
on Error resume next
CellRng.removeModifyListener(oListener)
End Sub
Sub CalledRoutine
Doc = ThisComponent
Sheet = Doc.Sheets.getByIndex(0)
Cell = Sheet.getCellByPosition(2,1)
CurrentVal = Cell.Value
Cell.Value = CurrentVal + Sheet.getCellByPosition(0,1).value
RmvListener 'ansonten würde die Zeile unten eine Endlosrekursion aus lösen
Sheet.getCellByPosition(0,1).string = ""
End Sub
***Leider weiß ich momentan nicht wo ich das her hab.
Gruß Karo
Re: Listener in Calc entfernen
Verfasst: Do, 16.02.2012 09:07
von Stephan
Soweit ich weiss***, wird 'olistener'
a. mit der Methode .removeModifyListener nicht völlig entfernt, sondern man kann damit nur verhindern, in eine Endlosrekursion zu laufen, falls das per Listener aufgerufe Makro seinerseits Änderungen in 'CellRng' durchführt.
Mmmh ... ich kann nichts dergleichen feststellen.
Wie ich bereits geschrieben hatte muß mal mit richtigem Gültigkeitsbereich deklarieren und bei mir funktioniert:
ohne Probleme in OOo 3.3.0. (Beispieldatei anhängend)
Warum das bei BastiL nicht funktioniert ist mir derzeitig unklar.
Gruß
Stephan
Re: Listener in Calc entfernen
Verfasst: Do, 16.02.2012 09:39
von Karolus
Hallo
Ja, funktioniert hier ebenfalls.
...
Anscheinend hab ich den Fehler gemacht, nach der Umdeklaration von 'Privat' auf 'Global' das Dokument nicht zu speichern und zu schliessen ?
Karo