如何在Libre Office Calc中单击鼠标来更改单元格的背景颜色?

时间:2015-09-14 01:48:35

标签: macros libreoffice libreoffice-calc libreoffice-basic

所以我需要的是:当我点击LibreOffice Calc中电子表格中的某些单元格时,背景颜色会变为黑色。如果我再次点击,它会变回白色。首先,所有相关细胞都是白色的。保存文档时,应保存当前条件,以便在重新打开时保持不变。

我已经看过如何制作宏,但我不知道这里使用的编码语言。我不是完全无法编程(我使用php),但我对此并不熟悉。

我甚至在网上找到了两个非常接近的解决方案,但是:

Change color of cell with mouse click in Excel 这实际上是针对Excel的,不幸的是因为他们直接解决了解决方案,我不知道每行是做什么的,也无法修改它。

https://forum.openoffice.org/en/forum/viewtopic.php?f=9&t=46389#p214370 本文档的解决方案具有不同的标准(它将单元格更改为数组中的许多不同颜色,并对点击次数进行计数,以便在几次后再次更改),但我无法弄明白,因为它全部都是用俄语评论,我的俄语有点生锈...如果我知道代码的哪一部分确定哪个是正确的单元格改变并且每次点击切换而不是计算几次点击,我有一个解决方案我假设

我试图为Calc上的吸血鬼安魂曲游戏设计一个简单的角色表,以一种轻便,快速且易于填充的方式。 “黑暗世界”的特征以点为单位,因此为了使其更容易填充,我会点击单元格。至少这是我的想法。我想这可以用PDF格式完成,但我不知道如何使用这些格式...

提前致谢。

1 个答案:

答案 0 :(得分:1)

您可以在LibreOffice Basic,BeanShell,JavaScript或Python中为LibreOffice编写宏,但是,除非您已安装(或愿意安装)Java Runtime Environment,否则您将无法使用LibreOffice Basic 。无论您选择何种编程语言,我建议您相应地标记您的问题,以便吸引更多人。

无论如何,如果您愿意尝试使用LibreOffice Basic,您可以写下以下内容:

Sub ChangeCellColor
    myCell = ThisComponent.CurrentController.Selection
    If {your condition here} Then
        If myCell.CellBackColor = 0 Then
            myCell.CellBackColor = -1
        Else
            myCell.CellBackColor = 0
        End If
    End If
End Sub

如果您希望宏影响您选择的任何单元格,只需忽略"如果{您的条件在这里}"位。但是,如果您希望它仅影响某些单元格,请相应地定义条件。例如:

myCell.CellAddress.Row = 9

宏仅影响第10行中的单元格(工作表的第1行具有CellAddress.Row = 0)

myCell.CellAddress.Column = 4

宏仅影响E列中的单元格(与上面相同:A列具有CellAddress.Column = 0)

请注意,我假设您的所有单元格都是黑色或白色,因此我的"如果它是黑色的,则将其设为白色; 否则,将其变为黑色"方法

顺便说一下,我试着把它分配给我的工作表的选择更改事件,这很乱,所以我把它分配给了双击事件。