Ändern Zelle Hintergrundfarbe in LibreOffice
Ich bin mit LibreOffice 3.5.4.2. Ich würde gerne die Hintergrundfarbe ändern von Zellen, die basierend auf verschiedenen Bedingungen. Als minimal-Beispiel, ich habe das folgende makro/Funktion definiert:
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
Führe ich die Funktion durch die Eingabe =BGCOLOR()
in eine Zelle. Die Zelle in der die Formel vorhanden ist, gibt die Farbe den Wert der ersten Zelle (0,0)
oder A1
auf Blatt 1, wie erwartet.
Aber ich Schaffe es nicht, die Funktion zu ändern, die hintergrund Farbe der Zelle A1
. Die Zelle Hintergrundfarbe wird nicht ändern, wenn ich entfernen Sie die REM
Zeile im Beispiel oben set die Hintergrundfarbe.
Wie kann ich die Hintergrundfarbe einer Zelle mit einer Funktion in LibreOffice?
(Ich lese über die Verwendung von "- Stilen", aber sah nicht weiter auf, weil ich viele verschiedene Farben im hintergrund und wollte nicht zu viele verschiedene Stile. Es ist möglich, manuell die Hintergrundfarbe ändern, ohne die Verwendung von Stilen, so dass ich dachte, es wäre möglich, das gleiche zu tun programmgesteuert.)
CellBackColor
aber es passiert nichts auf dem Blatt. Haben Sie Ihr problem lösen schließlich? Irgendwelche Ideen?InformationsquelleAutor SabreWolfy | 2012-08-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ersten, es ist nichts falsch mit Ihrem makro im Allgemeinen. Die einzige Linie die CellBackColor korrekt sind, wie angegeben. Das problem ist, dass die Funktion aufgerufen wird von dem Blatt, das Sie versuchen zu ändern. Eine Funktion ist nicht erlaubt zu ändern, das Blatt, von dem es aufgerufen wird. Also, wenn Sie die Funktion aufrufen von Blatt 1 und dann versuchen, ändern Sie die Hintergrundfarbe einer Zelle in Blatt 1, wird scheitern. Wenn, jedoch, Sie versucht, ändern Sie die Hintergrundfarbe einer Zelle auf Blatt 0, wenn der Aufruf aus einer Platte 1, die wie erwartet funktionieren wird.
Aus wiki.openoffice.org/wiki/Documentation/OOo3_User_Guides/...: "Wenn ein makro aufgerufen wird, als eine Calc-Funktion kann das makro nicht ändern Sie den Wert im sheet von dem das makro aufgerufen wurde."
Jedoch in neueren Versionen ist es möglich, ändern Sie die Zelle Werte, aber nicht Zelle Attribute auf dem gleichen Blatt.
InformationsquelleAutor Andrew
edit: Dies funktioniert nur in lowriter. Dank Campa.
REM
Zeile in meinem Beispiel mit deiner Linie, oder wenn Ihr Zeile ist ein Beispiel. Ich habe versucht, beide Ansätze, aber das hat das problem nicht gelöst. Wenn ich ersetzen Sie die Zeile, in meinem Beispiel mit Ihnen, die Zelle zurück-1
.Ich schlug vor, Sie zu ersetzen in der REM-Zeile. Aber ich weiß nicht, was Konrad bearbeitet. Vielleicht ist es nicht lesbar. Würde passen, um einige seltsame Logik in LO. 🙂 api.libreoffice.org/docs/common/ref/com/sun/star/table/...
Überprüft, meine eigene Makros für Tabellen in lowriter. Sollte in localc zu. "Für nRow = 0 To oTable.getRows().getCount() - 2 mit oTable.getrows().getByIndex(nRow) Wenn nRow MOD 2 = 1 Dann .BackColor = -1 Sonst .BackColor = RGB(192, 192, 192) End If End with ... Weiter"
Die von Ihnen vorgeschlagene Lösung gibt
BASIC Runtime error. Object variable not set
FEHLER.Können Sie bitte veröffentlichen Sie Ihren code? Ansonsten kann ich nur raten: Du benutzt die Schleife, ohne oTable?
InformationsquelleAutor bdongus
sollte die Linie
(kein "REM" gibt es natürlich auch, das schafft nur auskommentierte Zeile)
beachten Sie auch die parameter der Bogen 0 statt 1 wenn Sie nur ein Blatt
weitere interessante Eigenschaften, siehe Zelle Eigenschaften
InformationsquelleAutor Micky