Hallo zusammen,
ich versuche ein Makro zu schreiben, das beim ancklicken einer Zelle prüft welche Zelle angeklickt wurde und die Zelle gegebenenfalls ändert.
Ich weiße, daß das über einen Listener funktionieren müsste, komme aber mit den Listeners so gar nicht zurrecht.
Hat jemand einenen Tip (am besten mit einem kleinen Beispielprogramm)?
Angeklickte Zelle in Calc ändern
Moderator: Moderatoren
-
- ***
- Beiträge: 88
- Registriert: Mi, 30.07.2003 18:06
- Wohnort: Wiesloch
Angeklickte Zelle in Calc ändern
OOo 2.1 , Win XP
-
- ***
- Beiträge: 88
- Registriert: Mi, 30.07.2003 18:06
- Wohnort: Wiesloch
Hab die Lösung gefunden:
Global oListener As Object
Global oResentSelectedROw as Integer
Global oResentSelectedColnum as Integer
Global bBackjump as Boolean
Sub initializeListener
oListener = CreateUnoListener( "ClicListener_", "com.sun.star.view.XSelectionChangeListener" )
oDocument = ThisComponent
oDocument.getCurrentController.addSelectionChangeListener(oListener)
End Sub
Sub ClicListener_selectionChanged(oEvent)
Dim Selection As Object
Dim bTest as Boolean
oSelection = oEvent.source.selection
if oSelection.supportsService ("com.sun.star.sheet.SheetCell") then
bTest = True
If oSelection.CellAddress.row = oResentSelectedROw Then
If oSelection.CellAddress.Column = oResentSelectedColnum Then
bTest = false
If bBackjump Then
bBackjump = false
Exit Sub
endif
end if
end if
bBackjump = bTest
oResentSelectedROw = oSelection.CellAddress.row
oResentSelectedColnum = oSelection.CellAddress.Column
If oSelection.string = "X" Then
oSelection.string = ""
else
oSelection.string = "X"
end if
end if
End Sub
Global oListener As Object
Global oResentSelectedROw as Integer
Global oResentSelectedColnum as Integer
Global bBackjump as Boolean
Sub initializeListener
oListener = CreateUnoListener( "ClicListener_", "com.sun.star.view.XSelectionChangeListener" )
oDocument = ThisComponent
oDocument.getCurrentController.addSelectionChangeListener(oListener)
End Sub
Sub ClicListener_selectionChanged(oEvent)
Dim Selection As Object
Dim bTest as Boolean
oSelection = oEvent.source.selection
if oSelection.supportsService ("com.sun.star.sheet.SheetCell") then
bTest = True
If oSelection.CellAddress.row = oResentSelectedROw Then
If oSelection.CellAddress.Column = oResentSelectedColnum Then
bTest = false
If bBackjump Then
bBackjump = false
Exit Sub
endif
end if
end if
bBackjump = bTest
oResentSelectedROw = oSelection.CellAddress.row
oResentSelectedColnum = oSelection.CellAddress.Column
If oSelection.string = "X" Then
oSelection.string = ""
else
oSelection.string = "X"
end if
end if
End Sub
OOo 2.1 , Win XP
com.sun.star.view.XSelectionChangeListener
Hi,
hatte das gleiche Problem.
Dein Beitrag hat mir super weitergeholfen, vielen Dank!
hatte das gleiche Problem.
Dein Beitrag hat mir super weitergeholfen, vielen Dank!