3

我正在使用LibreOffice 3.5.4.2。我想根據各種條件改變單元格的背景顏色。作爲一個最小的例如,我有下面的宏/函數定義:在LibreOffice中更改單元格背景顏色

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中用函數設置單元格的背景顏色? (我讀過關於使用「樣式」的內容,但沒有詳細說明,因爲我需要設置許多不同的背景顏色,並且不想製作許多不同的樣式。可以手動更改背景顏色而不使用樣式,所以我認爲這將有可能做同樣的編程)。

+0

我也有同樣的問題:我設置單元格的「CellBackColor」,但在表單中沒有任何反應。你最終解決了你的問題嗎?有任何想法嗎? – Campa

回答

0
Cell.BackColor = RGB(50,60,70) should do the trick 

編輯:這隻適用於lowriter。感謝Campa。

+0

我不確定你是否建議用你的行替換我的例子中的REM行,或者你的行是一個單獨的例子。我嘗試了兩種方法,但這並沒有解決問題。如果我將我的示例中的行替換爲您的行,則單元格返回'-1'。 – SabreWolfy

+0

我建議替換REM行。但我不知道康拉德編輯的是什麼。也許它不可讀。適合LO中的一些奇怪的邏輯。 :) http://api.libreoffice.org/docs/common/ref/com/sun/star/table/CellProperties.html#CellBackColor – bdongus

+0

檢查我自己的宏在lowriter中的表。應該在localc工作。 '對於nRow = 0至oTable.getRows()getCount將() - 2 與oTable.getrows()getByIndex(nRow) 如果nRow MOD 2 = 1,則 .BackColor = -1 否則 。BackColor = RGB(192,192,192) End If end with ... Next# – bdongus

0

行應該是

cell.cellbackcolor = RGB(50,60,70) 

(沒有「REM」有,當然,這只是創建註釋行)

也考慮表中的參數是,而不是1,如果你只有一個片

其他有趣的性質,參見cell properties

2

首先,第一般來說,你的宏是沒有問題的。如上所述,設置CellBackColor的單行是正確的。問題是該函數是從您正在嘗試修改的工作表調用的。一個函數不允許修改它被調用的表單。所以,如果你從表1中調用你的函數,然後嘗試改變表格1中單元的背景顏色,那將會失敗。但是,如果嘗試從第1張紙片調用時更改紙張0上的單元格的背景顏色,則該功能將按預期工作。

+0

謝謝。請編輯您的答案,以包含來源/引文供將來參考? – SabreWolfy

+0

從https://wiki.openoffice.org/wiki/Documentation/OOo3_User_Guides/Calc_Guide/Accessing_cells_directly:「當調用一個宏作爲Calc函數時,該宏不能修改調用該宏的表單中的任何值。」 –

+0

但是,在較新的版本中,可以在同一工作表上修改單元格值而不是單元格屬性。 –

相關問題