【发布时间】:2016-04-04 21:28:26
【问题描述】:
我正在使用 LibreOffice Calc 存储 16 种 RGB 颜色(B 列中的红色,C 中的绿色和 D 中的蓝色),然后我想用每种颜色绘制 16 个单元格的背景。每种颜色都在一行中。
目前我已经部分实现了这一点:不仅绘制了 16 个单元格,而且还绘制了 48 个(16x3)!看来我需要“分组”嵌套循环。这是我的代码/宏:
function bgcolor()
Dim Doc, Sheet, CellPaint As Object
Dim CellR, CellG, CellB As String
Doc = ThisComponent
Sheet = Doc.Sheets.getByIndex(0)
For i = 1 to 16 step 1
For j = 1 to 3 step 1
CellR = Sheet.getCellByPosition(j+0,i).getValue()
CellG = Sheet.getCellByPosition(j+1,i).getValue()
CellB = Sheet.getCellByPosition(j+2,i).getValue()
CellPaint = Sheet.getCellByPosition(j+6,i)
CellPaint.CellBackColor = RGB(CellR,CellG,CellB)
next j
next i
bgcolor=CellPaint.CellBackColor
end function
这是结果:
第一列颜色 (H) 正是我需要的。其他两列出现在那里,所以:如何修复我的嵌套循环?可能我需要使用简单的if 语句过滤它们,但我不确定。
编辑 - 供参考:解决方案应该类似于this one,但是我已经读过它在 OpenOffice 上是不可能的(我假设在 LibreOffice 上都不是)。
谢谢!
【问题讨论】:
标签: basic