7.1.20 Wie kann man eine bedingte Formatierung einfügen?
Man kann auch mit StarBasic eine oder mehrere bedingte Formatierungen für Zellen einfügen. Dies erfolgt mit der Propertie ConditionalFormat einer einer Zelle.
Dazu muß man eine Objekt des ConditionalFormat holen und diesem neue Eigenschaften für die Formatierung zuweisen. Die Eigenschaften werden in einem Array mit Propertyvalues erzeugt.
Dabei geht es um drei mögliche Parameter: Operator, Formel und Stylename.
Der Operator legt fest wie mit dem Zielwert verglichen wird. Unterschieden werden dabei:
EQUAL
Gleich
Der Wert entspricht dem folgenden Wert
NOT_EQUAL
Nicht gleich
Der Wert entspricht nicht dem folgenden Wert
GREATER
Größer
Der Wert ist größer wie der folgende Wert
GREATER_EQUAL
Größer gleich
Der ist größer oder gleich dem folgenden Wert
LESS
Kleiner
Der Wert ist kleiner wie der folgende Wert
LESS_EQUAL
Kleiner gleich
Der Wert ist kleiner oder gleich dem folgenden Wert
BETWEEN
Zwischen
Der Wert ist zwischen den beiden folgenden Werten
NOT_BETWEEN
Nicht zwischen
Der Wert ist nicht zwischen den beiden folgenden Werten
FORMULA
Formel
Der Wert komm aus einer Formel

Der Parameter wird mit
oCondition(0).Name = "Operator"
oCondition(0).Value = com.sun.star.sheet.ConditionOperator.FORMULA
festgelegt. Hier mit Formula.
Der nächste Parameter ist Formel. Dieser Parameter enthält einen Wert, ein Verweis auf eine Zelle oder eine Formel.
Wenn der Operator "zwischen" oder "nicht zwischen" ist gibt es zwei Formeln für die Werte.
oCondition(0).Name="Formula1"
oCondition(0).Value=100
oder oCondition(0).Value="Formula2"
Der letzte Parameter ist Stylename. In diesem wird das Zellformat in Form der Zellvorlage eingetragen.
oCondition(2).Name = "StyleName"
oCondition(2).Value = "Überschrift1"
Interessanterweise kann man innerhalb eines Makros mehr wie drei Bedingungen festlegen. Über den Dialog in Calc gehen nur drei Bedingungen.

So und jetzt das ganze in einen Beispiel:

Sub EinfuegenConditionalFormCell
Dim oCell as Object
Dim oConditionalForm as Object
oCell = ThisComponent.Sheets(0).getCellByPosition( 0, 0 )
oConditionalForm = oCell.ConditionalFormat
Dim oCondition(3) as New com.sun.star.beans.PropertyValue
oCondition(0).Name = "Operator"
oCondition(0).Value = com.sun.star.sheet.ConditionOperator.FORMULA
oCondition(1).Name = "Formula1"
oCondition(1).Value = "SUM(A1:A10) > 100"
oCondition(2).Name = "StyleName"
oCondition(2).Value = "Überschrift1"
oConditionalForm.addNew( oCondition() )
oCondition(0).Value = com.sun.star.sheet.ConditionOperator.BETWEEN
oCondition(1).Name = "Formula1"
oCondition(1).Value = "100"
oCondition(1).Name = "Formula2"
oCondition(1).Value = "200"
oCondition(2).Name = "StyleName"
oCondition(2).Value = "Test"
oConditionalForm.addNew( oCondition() )
oCell.ConditionalFormat = oConditionalForm
End Sub