0

所以这就是我需要的:当我在 LibreOffice Calc 的电子表格中单击某些单元格时,背景颜色会变为黑色。如果我再次单击,它会变回白色。起初,所有相关单元格都是白色的。保存文档时,它应该保存当前状态,以便在我重新打开时仍然存在。

我已经看到如何创建宏,但我不知道这里使用的编码语言。我并非完全不会编程(我使用 php),但我对此并不熟悉。

我什至在网上找到了两个相近的解决方案,但是:

在 Excel 中通过鼠标单击更改单元格的颜色 这实际上是针对 Excel 的,不幸的是,因为他们几乎没有解释就直接找到了解决方案,我不知道每一行的作用,也无法修改它。

https://forum.openoffice.org/en/forum/viewtopic.php?f=9&t=46389#p214370 该文档具有不同标准的解决方案(它将单元格更改为数组中的许多不同颜色,并计算点击次数它在几次之后再次改变),但我无法弄清楚,因为它都是用俄语评论的,而且我的俄语有点生疏......如果我知道代码的哪一部分决定了哪些是正确的单元格来改变和每次点击切换而不是计算几次点击,我想我会有一个解决方案。

我正在尝试为 Calc 上的 Vampire the Requiem 游戏设计一个简单的字符表,以使其轻巧、快速且易于填充。黑暗世界的特征以点表示,所以为了更容易填充,我会点击单元格。至少这是我的想法。我想它可以用 PDF 表单完成,但我也不知道如何使用这些表单......

提前致谢。

4

1 回答 1

1

您可以在 LibreOffice Basic、BeanShell、JavaScript 或 Python 中为 LibreOffice 编写宏,但是,除非您已经安装(或愿意安装)Java 运行时环境,否则您将无法使用 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

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

myCell.CellAddress.Row = 9

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

myCell.CellAddress.Column = 4

宏只影响 E 列中的单元格(同上:A 列有 CellAddress.Column = 0)

请注意,我假设您所有的单元格都是黑色或白色,因此我的“如果它是黑色的,就让它变白;否则,让它变黑”的方法。

顺便说一句,我试图将其分配给工作表的 Selection Change 事件,结果一团糟,因此我将其分配给了 Double-click 事件。

于 2015-09-14T21:26:05.243 回答