Listener-Aktion bei Zelländerung

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Listener-Aktion bei Zelländerung

Re: Listener-Aktion bei Zelländerung

von ooodoc » Mi, 17.06.2009 18:39

Dank an Jürgen es funktioniert.

Allgemein
Als "gelernter Makroklicker" ist es nicht so einfach nun die Makros zu schreiben. Zum Listener, gibt es eine Übersicht darüber und deren Einsatzmöglichkeiten.

Hast Du hier nicht was vergessen?

Code: Alles auswählen

oDoc = ThisComponent
   oSheetQuelle = oDoc.sheets(0)
   oSheetZiel = ODoc.sheets(2)
   oQuelle = oSheetQuelle.getCellRangeByName("A1").RangeAddress   
   oZiel = oSheetZiel.getCellRangeByName("C1").CellAddress
   oSheetQuelle.copyRange(oZiel,oQuelle)
Nein 8)

Gruß ooodoc

PS:Habe leider in der falschen Rubrik gepostet Bitte verschieben.

Re: Listener-Aktion bei Zelländerung

von komma4 » Mi, 17.06.2009 13:46

Schau Dir mal andere Beispiele an...

Du initiierst einen MODIFY Listener, willst dann aber einen SELECTIONCHANGE Listener abbauen.
Und Du hast keine CopLi_modified() Routine ...

Re: Listener-Aktion bei Zelländerung

von turtle47 » Mi, 17.06.2009 13:44

Hi ooodoc,

Hast Du hier nicht was vergessen?

Code: Alles auswählen

oDoc = ThisComponent
   oSheetQuelle = oDoc.sheets(0)
   oSheetZiel = ODoc.sheets(2)
   oQuelle = oSheetQuelle.getCellRangeByName("A1").RangeAddress   
   oZiel = oSheetZiel.getCellRangeByName("C1").CellAddress
   oSheetQuelle.copyRange(oZiel,oQuelle)
Vergleiche hier.

Der von Dir verwendetet Listener funktioniert bei mir nicht.

Hier mal ein funktionierender Code:

Code: Alles auswählen

Global oDatChangeListener As Object
Global oListener As Object
Global oCell As Object

Sub addeventlistener
	oDoc = thisComponent
	oSheets = oDoc.getSheets()
	oSheet = oSheets.getByName("Tabelle2")
	oCell = oSheet.getCellRangeByName("A1")
	oListener = CreateUnoListener( "CopLi_","com.sun.star.chart.XChartDataChangeEventListener" )
	oCell.addChartDataChangeEventListener(oListener)
End Sub

Sub EventListenerOff
	oCell.removeChartDataChangeEventListener(oListener) 
End Sub


sub CopLi_chartDataChanged
Dim oDoc as Object
Dim oSheetQuelle as Object, oSheetZiel as Object
Dim oZiel as Object , oQuelle as Object

   oDoc = ThisComponent
   oSheetQuelle = oDoc.sheets(0)
   oSheetZiel = oDoc.sheets(1)
   oQuelleRange=oSheetQuelle.getCellRangeByName("A1")
   oQuellRangeAddresse = oQuelleRange.getRangeAddress
   oZiel = oSheetZiel.getCellRangeByName("C1")
   oZielCellAdresse=oZiel.getCellAddress
   oSheetZiel.copyRange(oZielCellAdresse,oQuellRangeAddresse)
end sub
Jürgen

Listener-Aktion bei Zelländerung

von ooodoc » Mi, 17.06.2009 12:08

Moin

Habe ein Problem mit dem Listener, bei einer Änderung des Zellinhalts (Tabelle2; ZelleA1) soll eine Aktion ausgeführt werden in diesem Fall das kopieren eines Wertes. Ausführung = 0
Wo ist das Problem?

Code: Alles auswählen

Sub Listener_registrieren()
objekt = ThisComponent.Sheets(1).GetCellRangeByName("a1")
oCrngData = CreateUnoListener("CopLi_","com.sun.star.util.XModifyListener")
objekt.addModifyListener(oCrngData)
End Sub

Sub Listener_entfernen()
On Error Resume Next
ThisComponent.CurrentController.removeSelectionChangeListener(oListener)
End Sub 

sub CopLi

	Dim oDoc as Object
	Dim oSheetQuelle as Object, oSheetZiel as Object
	Dim oZiel as Object , oQuelle as Object

	oDoc = ThisComponent
	oSheetQuelle = oDoc.sheets(0)
	oSheetZiel = ODoc.sheets(2)
	oQuelle = oSheetQuelle.getCellRangeByName("A1").RangeAddress	
	oZiel = oSheetZiel.getCellRangeByName("C1").CellAddress
	oSheetQuelle.copyRange(oZiel,oQuelle)

end sub
Gruß ooodoc

Nach oben