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

Posted

技术标签:

【中文标题】在 LibreOffice 中更改单元格背景颜色【英文标题】:Changing cell background color in LibreOffice 【发布时间】:2012-08-18 19:36:08 【问题描述】:

我使用的是 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 中使用函数设置单元格的背景颜色?

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

【问题讨论】:

我确实有同样的问题:我设置了单元格的CellBackColor,但工作表中没有任何反应。你最终解决了你的问题吗?有什么想法吗? 【参考方案1】:

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

【讨论】:

谢谢。请编辑您的答案以包含来源/引文以供将来参考? 来自wiki.openoffice.org/wiki/Documentation/OOo3_User_Guides/…:“当宏作为 Calc 函数调用时,宏无法修改调用宏的工作表中的任何值。” 但是,在较新的版本中,可以修改同一工作表上的单元格值,但不能修改单元格属性。【参考方案2】:

该行应该是

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

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

如果您只有一张工作表,请将工作表的参数也考虑为 0 而不是 1

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

【讨论】:

【参考方案3】:
Cell.BackColor = RGB(50,60,70) should do the trick

edit:这仅适用于 lowriter。谢谢坎帕。

【讨论】:

我不确定您是否建议将我示例中的 REM 行替换为您的行,或者您的行是否是一个单独的示例。我尝试了这两种方法,但这并没有解决问题。如果我将示例中的行替换为您的行,则单元格将返回 -1 我建议更换 REM 线。但我不知道康拉德编辑了什么。也许它不可读。适合 LO 中的一些奇怪的逻辑。 :) api.libreoffice.org/docs/common/ref/com/sun/star/table/… 检查了我自己的宏以查找 lowriter 中的表格。也应该在本地工作。 ` For nRow = 0 To oTable.getRows().getCount() - 2 with oTable.getrows().getByIndex(nRow) If nRow MOD 2 = 1 Then .BackColor = -1 Else .BackColor = RGB(192, 192, 192)结束如果以...结尾` @bdongus :您提出的解决方案给出了BASIC Runtime error. Object variable not set ERROR。 @Campa:你能发布你的代码吗?否则我只能猜测:您使用循环而不设置 oTable?

以上是关于在 LibreOffice 中更改单元格背景颜色的主要内容,如果未能解决你的问题,请参考以下文章

更改每个其他单元格的 UItableViewCell 背景颜色

更改视图外单元格的背景颜色

更改tableView中偶数单元格的背景颜色

如何更改子单元格的单元格背景颜色

根据存储在其他单元格中的 RGB 值动态更改单元格的背景颜色

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