[Gelöst] Bedingte Formatierung/Duplikat zur Vorzeile

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

retuwe61
****
Beiträge: 159
Registriert: So, 18.11.2007 21:25

[Gelöst] Bedingte Formatierung/Duplikat zur Vorzeile

Beitrag von retuwe61 »

Hallo miteinander.
Eine Tabelle ist nach Spalte L (Datum) und anschließend nach Spalte N (Postleitzahl) sortiert.
Ich möchte in Spalte G alle Zellen farbig markieren, wenn in Spalten L UND N übereinstimmende Zelleninhalte vorhanden sind und zwar entweder in der Vorzeile oder der nachfolgenden.
Mit folgendem Makro wird zwar die erste Zelle eingefärbt, jedoch nicht diejenige in der nächsten Zeile.
Hat jemand eine Idee, was ich ändern muss?
Gruß
Uwe

Code: Alles auswählen

Sub EinfuegenBedingteFormatierung
Dim oCell as Object
Dim oConditionalForm as Object
oDoc = thisComponent
oSheet = oDoc.Sheets.getByName("Gesamtübersicht")

oCellCursor = oSheet.createCursor()
oCellCursor.GotoEndOfUsedArea(True)
letzte_Zeile = oCellCursor.getRangeAddress.EndRow

oRange = oSheet.getCellRangeByPosition(6,0,6,letzte_Zeile)
oBedingungen = oRange.getPropertyValue( "ConditionalFormat" )
Dim oBedingung(2) as New com.sun.star.beans.PropertyValue

oBedingung(0).Name = "Operator"
oBedingung(0).Value = com.sun.star.sheet.ConditionOperator.FORMULA
oBedingung(1).Name = "Formula1"
oBedingung(1).Value = "IF(AND($L1=$L2;$N1=$N2))"

oBedingung(2).Name = "StyleName"
oBedingung(2).Value = "rot"
oBedingungen.addNew( oBedingung )
oRange.setPropertyValue( "ConditionalFormat", oBedingungen )
end sub
Zuletzt geändert von retuwe61 am Do, 30.03.2017 13:23, insgesamt 1-mal geändert.
Angewandt wird LibeOffice Version 5.1.6.2
mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: Bedingte Formatierung/Duplikat zur Vorzeile

Beitrag von mikeleb »

Hallo,
die Bedingung prüft nur, ob eine Übereinstimmung mit der nachfolgenden Zeile vorliegt. Du wirst noch eine zweite Bedingung für den Bereich ab Zeile 2 für die vorangegangene Zeile formulieren müssen (da die erste Zeile ja keine Vorgängerzeile hat).

Code: Alles auswählen

oRange = oSheet.getCellRangeByPosition(6,1,6,letzte_Zeile)
oBedingungen = oRange.getPropertyValue( "ConditionalFormat" )
Dim oBedingung(2) as New com.sun.star.beans.PropertyValue

oBedingung(0).Name = "Operator"
oBedingung(0).Value = com.sun.star.sheet.ConditionOperator.FORMULA
oBedingung(1).Name = "Formula1"
oBedingung(1).Value = "IF(AND($L1=$L2;$N1=$N2))"

oBedingung(2).Name = "StyleName"
oBedingung(2).Value = "rot"
oBedingungen.addNew( oBedingung )
oRange.setPropertyValue( "ConditionalFormat", oBedingungen )
Gruß,
mikeleb
retuwe61
****
Beiträge: 159
Registriert: So, 18.11.2007 21:25

Re: Bedingte Formatierung/Duplikat zur Vorzeile

Beitrag von retuwe61 »

Das hatte ich auch schon erfolglos versucht.
Für die selbe Zelle sind die Formeln für beide Bedingungen dann identisch.
Für Zelle G2 lautet auch die zweite Formel WENN(UND($L2=$L3;$N2=$N3)) und nicht WENN(UND($L1=$L2;$N1=$N2)).
Gruß
Uwe
Angewandt wird LibeOffice Version 5.1.6.2
mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: Bedingte Formatierung/Duplikat zur Vorzeile

Beitrag von mikeleb »

Hallo,
ich hab's gefunden. Es fehlt noch ein vierter Parameter, der für den relativen Bezug wichtig ist.
oBedingung(3).Name = "SourcePosition"
oBedingung(3).Value = oSheet.getCellByPosition(6,0).celladdress
bzw.
oBedingung(3).Name = "SourcePosition"
oBedingung(3).Value = oSheet.getCellByPosition(6,1).celladdress
Gruß,
mikeleb
retuwe61
****
Beiträge: 159
Registriert: So, 18.11.2007 21:25

Re: [Gelöst] Bedingte Formatierung/Duplikat zur Vorzeile

Beitrag von retuwe61 »

Super. Danke!
Gruß
Uwe
Angewandt wird LibeOffice Version 5.1.6.2
Antworten