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