Excel 如何将单元格而不是单元格的值传递给LibreOffice函数?

Excel 如何将单元格而不是单元格的值传递给LibreOffice函数?,excel,libreoffice,libreoffice-calc,vba,Excel,Libreoffice,Libreoffice Calc,Vba,我希望用户能够选择单元格,然后让我的功能对这些单元格进行操作 我该怎么做?ByRef和as对象似乎做了正确的事情,但是Excel/{Libre,Open}Office拒绝函数调用,因为用户的输入不是对象 有没有办法找出为要运行的函数选择了哪些单元格 即使我必须做一些事情,比如查找调用单元格的地址,然后反向查找输入到该单元格中的单元格名称,这可能会起作用。我愿意接受任何解决方案,允许我的用户像编写普通函数一样编写此函数,并使此函数能够修改选定的单元格。以下是我要说的: Function SIMVO

我希望用户能够选择单元格,然后让我的功能对这些单元格进行操作

我该怎么做?ByRef和as对象似乎做了正确的事情,但是Excel/{Libre,Open}Office拒绝函数调用,因为用户的输入不是对象

有没有办法找出为要运行的函数选择了哪些单元格

即使我必须做一些事情,比如查找调用单元格的地址,然后反向查找输入到该单元格中的单元格名称,这可能会起作用。我愿意接受任何解决方案,允许我的用户像编写普通函数一样编写此函数,并使此函数能够修改选定的单元格。以下是我要说的:

Function SIMVOL( rF, ByRef mX, mY, cR, cS ) ' or Function SIMVOL(...mX as Object...)
    mX.value() = 10
    SIMVOL = mX.value() * mY
End Function

这里有一个改编自的例子。它应该为你指明正确的方向。


我不知道{Libre,Open}Office,但在excel中,您不能使用UDF以正常方式修改单元格内容。我已经能够从文档对象中获取核心地址和查找单元格引用。但要获取单元格作为参数,我的用户必须键入A1、B1等,他们不能用鼠标选择单元格,因为这些选择解析为数据而不是地址。
Sub DivideSelectionByTen()
  REM Divide the current selection by 10
  Dim oData()
  Dim oRow()
  Dim i As Integer
  Dim j As Integer

  Dim oRange As object
  Dim dDivisor As Double

  oRange = ThisComponent.getCurrentController().getSelection()

  dDivisor = 10

  oData() = oRange.getDataArray()
  For i = LBound(oData()) To UBound(oData())
    oRow() = oData(i)
    For j = LBound(oRow()) To UBound(oRow())
      oRow(j) = oRow(j) / dDivisor
    Next
  Next
  oRange.setDataArray(oData())
End Sub