如何将cellrange传递给用户定义的宏参数

时间:2017-01-21 18:23:57

标签: macros libreoffice-calc

我想在我的宏中使用cellranges。

Function SumIfColor(SumRange)
    Dim oRange as object
    Dim oSheet as object

    ' Get Access to the Active Spreadsheet
    oSheet = ThisComponent.CurrentController.ActiveSheet

    ' Get access to the Range listed in Sum Range
    oRange = oSheet.getCellRangeByName(SumRange).RangeAddress
End Function

问题是如何使用真正的cellRange对象而不是String来调用此函数。因为getCellRangeByName仅适用于String变量。 因为当我像这样调用函数时

sumifcolor(B1:B3)

我收到以下错误: “未设置对象变量”

我读了一些提示here,但它没有帮助我。

1 个答案:

答案 0 :(得分:2)

无法传递实际的CellRange对象。一种解决方案是传递行号和列号,类似于链接中@Axel Richter的答案的第二部分:

=SUMIFCOLOR(COLUMN(B1:B3),ROW(B1),COLUMN(B3),ROW(B3))

要打电话:

B1:B3

由于COLUMN(B1:B3),只要{{1}}范围内的值发生变化,就会重新计算总和。但是,显然只改变单元格的颜色不会导致重新计算。