6

我正在使用 LibreOffice 3.5.4.2。我想根据各种条件更改单元格的背景颜色。作为一个最小的例子,我定义了以下宏/函数:

function bgcolor()
Dim Doc As Object
Dim Sheet As Object
Dim Cell As Object   

Doc = ThisComponent
Sheet = Doc.Sheets(1)

Cell = Sheet.getCellByPosition(0, 0)
REM Cell.CellBackColor = RGB(50,60,70)
bgcolor=Cell.CellBackColor
end function

=BGCOLOR()我通过输入一个单元格来执行该功能。如预期的那样,存在该公式的单元格返回第一个单元格(0,0)或工作表 1 上的颜色值。A1

但是,我无法获得更改单元格背景颜色的功能A1。当我删除上面示例中的行以设置背景颜色时,单元格背景颜色不会改变REM

如何在 LibreOffice 中使用函数设置单元格的背景颜色?

(我读过关于使用“样式”,但没有进一步研究,因为我需要设置许多不同的背景颜色并且不想制作许多不同的样式。可以手动更改背景颜色而不使用样式,所以我认为可以以编程方式执行相同的操作。)

4

3 回答 3

3

首先,您的宏总体上没有问题。如前所述,设置 CellBackColor 的单行是正确的。问题是该函数是从您尝试修改的工作表中调用的。不允许函数修改调用它的工作表。因此,如果您从工作表 1 调用函数,然后尝试更改工作表 1 中单元格的背景颜色,则会失败。但是,如果您在从工作表 1 调用时尝试更改工作表 0 上单元格的背景颜色,则将按预期工作。

于 2015-10-29T12:37:09.633 回答
2

该行应该是

cell.cellbackcolor = RGB(50,60,70) 

(当然没有“REM”,这会创建刚刚注释的行)

如果您只有一张纸,请考虑将图纸的参数设为0而不是 1

有关其他有趣的属性,请参阅单元格属性

于 2015-10-18T17:14:39.777 回答
0
Cell.BackColor = RGB(50,60,70) should do the trick

编辑:这只适用于lowriter。谢谢坎帕。

于 2012-12-23T17:05:45.443 回答