【问题标题】:How to change the background color of a cell on mouse click in Libre Office Calc?如何在 Libre Office Calc 中单击鼠标时更改单元格的背景颜色?
【发布时间】:2015-12-09 22:51:47
【问题描述】:

这就是我需要的:当我在 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 上的 Vampire the Requiem 游戏设计一个简单的角色表,以使其轻巧、快速且易于填充。黑暗世界的特征以点表示,所以为了更容易填充,我会点击单元格。至少这是我的想法。我想它可以用 PDF 表单完成,但我也不知道如何使用这些表单......

提前致谢。

【问题讨论】:

    标签: macros libreoffice libreoffice-calc libreoffice-basic


    【解决方案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)

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

    顺便说一句,我试图将其分配给工作表的选择更改事件,结果一团糟,所以我将其分配给了双击事件。

    【讨论】:

    • 这是一个开始,在将这个宏添加到我的文档之后,因为我什至不知道如何将它分配给事件,我搜索并了解到它可以通过右键单击电子表格名称来完成,选择“电子表格事件”或类似的(我的是葡萄牙语),然后将宏分配给双击。正如您所说,将其分配给简单的单元格选择并没有按预期工作。现在到我需要做的最后一部分,我可以只将它分配给某些单元格,还是以某种方式编写宏,以便它可能只影响数组中的正确单元格?
    • 您不能只将宏分配给某些单元格,但您可以让宏检查单元格地址并只影响您想要的单元格。我编辑了我的答案,向您展示如何。
    猜你喜欢
    • 1970-01-01
    • 2015-09-29
    • 2011-11-07
    • 1970-01-01
    • 2021-01-04
    • 1970-01-01
    • 1970-01-01
    • 2014-03-27
    • 2020-04-28
    相关资源
    最近更新 更多