libreofficebasiclibreoffice-calc

Get Row and Column number from "ThisComponent.CurrentSelection" in libreoffice calc basic


I have this code where I can get which one is the current selected cell and use it to modify its value:

theSelection = ThisComponent.CurrentSelection
theSelection.setString("some value")

Now I want to move to the next column to the right, if it was Microsoft excel VBA I could just use something like theSelection.Offset(0,1) but that's not the case. So I'm doing some workarounds of course:

nextCell = oActiveSheet.getCellByPosition( ???currentColumn + 1, ???currentRow)
ThisComponent.CurrentController.select( nextCell )

I just want to know the simplest way to replace these ??? to the actual values of the theSelection var to move to the next column to the right.

I also tried this:

nextCell = oActiveSheet.getCellByPosition( column() + 1, row())

But I don't know why it is always returning column() = 1 and row() = 1 in regardless of which is the value of the CurrentSelection. Thanks in advance for the help.


Solution

  • Get the cell address.

    Sub ChangeAndThenGoToCellToRightOfSelection
        oActiveSheet = ThisComponent.getCurrentController().getActiveSheet()
        oSels = ThisComponent.getCurrentSelection()
        If oSels.supportsService("com.sun.star.sheet.SheetCell") Then
            'A single cell is selected.
            oSels.setString("some value")
            address = oSels.getCellAddress()
            nextCell = oActiveSheet.getCellByPosition(address.Column + 1, address.Row)
            ThisComponent.CurrentController.select(nextCell)
        End If
    End Sub
    

    To see what an object can do, use an introspection tool such as XrayTool or MRI.