Seite 1 von 1

[gelöst] Mehrere Sheets mit Listener, wer war's ?

Verfasst: Fr 4. Mär 2016, 17:14
von Fischreiher
Ich habe einen Listener, der bewusst zu mehreren Sheets addiert wurde.

Wenn in den Tabellen Sheet-übergreifende Bezüge existieren, kann eine Änderung dazu führen, dass sich auf mehreren Sheete etwas ändert und so der Listener mehrfach aufgerufen wird. Das ist nicht immer der Fall, offenbar abhängig davon, ob seit der letzten Änderung am gleichen Feld der Sheet gewechselt wurde.

Für eine saubere Lösung möchte ich herausfinden, von welchem Sheet der Listener aufgerufen wurde.

Kann mir jemand mit der Zeile unten in "Modify_modified" helfen?

Code: Alles auswählen

Global oListener as Object

' Tools - Customize - Events (in the document window, not the macro window)
' Open Document  -> AddListener
' Document Close -> RemoveListener

Sub AddListener
	oListener = createUnoListener("Modify_","com.sun.star.util.XModifyListener")
	oSheets=ThisComponent.Sheets
	for i=0 to oSheets.count-1 'for all sheets
		oSheet = ThisComponent.sheets(i)
		oSheet.addModifyListener(oListener)
	next
End Sub

Sub RemoveListener
	oSheets=ThisComponent.Sheets
	for i=0 to oSheets.count-1 'for all sheets
		oSheet = ThisComponent.sheets(i)
		oSheet.removeModifyListener(oListener)
	next
End Sub

Sub Modify_modified(oEvent As Object)
	sSheetName = ThisComponent.getCurrentController().getActiveSheet().getName()
    print "oEvent came from ",sSheetName ' wrong, should be oEvent.Source.something
End Sub

Sub Modify_disposing(oEvent As Object)
End Sub

Re: Mehrere Sheets mit Listener, wer war's ?

Verfasst: Fr 4. Mär 2016, 17:34
von karolus
Hallo

Surprise, surprise

Code: Alles auswählen

Sub Modify_modified(oEvent As Object)
   print "oEvent came from ",oEvent.Source.Name
End Sub

Re: Mehrere Sheets mit Listener, wer war's ?

Verfasst: Fr 4. Mär 2016, 17:42
von Fischreiher
Danke schön. Ich dachte, ich hätte das schon ausprobiert, muss mich aber wohl vertippt haben.

Re: Mehrere Sheets mit Listener, wer war's ?

Verfasst: Fr 4. Mär 2016, 17:49
von Fischreiher
Folgefrage: Jetzt wo ich die Namen sehe, bin ich sicher, dass ich blattübergreifende Bezüge habe, die nicht beabsichtigt sind.

Weiß jemand, wie man blattübergreifende Bezüge einfach finden kann?

Mit "Search in Formulas" nach den betroffenen Sheet-Namen finde ich nichts.