更改LibreOffice中的单元格背景颜色

时间:2012-08-23 09:51:33

标签: macros spreadsheet background-color libreoffice libreoffice-basic

我使用的是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()输入单元格来执行该功能。存在该公式的单元格将按预期返回工作表1上第一个单元格(0,0)A1的颜色值。

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

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

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

Cell.BackColor = RGB(50,60,70) should do the trick

编辑:这只适用于lowriter。谢谢广告。

答案 2 :(得分:0)

该行应

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

(当然没有“REM”,只创建了注释行)

如果您只有一张表,请考虑表格的参数 0 而不是1

有关其他有趣的属性,请参阅cell properties