【问题标题】:Changing cell background color in LibreOffice在 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,但工作表中没有任何反应。你最终解决了你的问题吗?有什么想法吗?

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


【解决方案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?
    猜你喜欢
    • 1970-01-01
    • 2011-02-17
    • 2011-09-24
    • 2013-04-12
    • 2021-10-31
    • 1970-01-01
    • 2013-06-15
    • 2013-06-28
    • 2016-05-27
    相关资源
    最近更新 更多