在 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 背景颜色