Tabellen - Calc
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 Zelle.
Dazu muss man ein 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.
Dazu muss man ein 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 als der folgende Wert
|
|
GREATER_EQUAL
|
Größer gleich
|
Der ist größer oder gleich dem folgenden Wert
|
|
LESS
|
Kleiner
|
Der Wert ist kleiner als 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 kommt aus einer Formel
|
Der Parameter wird mit
oCondition(0).Name = "Operator"
oCondition(0).Value = com.sun.star.sheet.ConditionOperator.FORMULA
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.
Wenn der Operator "zwischen" oder "nicht zwischen" ist gibt es zwei Formeln für die Werte.
oCondition(0).Name="Formula1"
oCondition(0).Value=100
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"
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
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
