Seite 1 von 1

bedingte Formatierung

Verfasst: Do, 14.02.2008 18:49
von moritz
Hallo, hoffentlich kann mir bei dem folgenden Problem jemand helfen und ich habe keinen bug in OO-Calc 2.3.1 XP gefunden.
Mit einem Makro möchte ich bedingte Formatierungen eintragen, hier ein Ausschnitt daraus

oBedingungen = oSheet.getCellByPosition (iSpalte,lZeile).getPropertyValue( "ConditionalFormat" )
oBedingungen.clear
oBedingung(0).Name = "Operator"
oBedingung(0).Value = com.sun.star.sheet.ConditionOperator.GREATER
oBedingung(1).Name = "Formula1"
oBedingung(1).Value = "MITTELWERT($Druckbild.$D$13:$O$13)"
oBedingung(2).Name = "StyleName"
oBedingung(2).Value = "überDurchschnitt"
oBedingungen.addNew( oBedingung )
oSheet.getCellByPosition (iSpalte,lZeile).setPropertyValue( "ConditionalFormat", oBedingungen )
Nach Ausführung des Makros ist erstmal nicht zu sehen. Wenn man dann aber die Zelle anklickt, ist die Bedingung eingetragen und bei OK wird die bedingte Formatierung auch korrekt ausgeführt.
aber eigentlich muß doch die Bedingung ausgeführt werden, ohne daß noch ein Eingriff notwendig ist. Hat jemand einen Tip dazu?
Vielen Dank für Eure Mühe, Moritz

Re: bedingte Formatierung

Verfasst: Do, 14.02.2008 19:17
von komma4
Du solltest einen Bereich und keine Zellposition setzen, siehe Bedingte Formatierung per Makro setzen

Klappt es dann?

Re: bedingte Formatierung

Verfasst: Fr, 15.02.2008 08:16
von moritz
Vielen Dank für Deine Antwort. Ich habe jetzt einen Bereich für die Bedingung gesetzt.
Das Ergebnis ist aber das Gleiche. Das Problem muß mit der Formel zu tun haben.
oBedingung(1).Value = "MITTELWERT($Druckbild.$D$13:$O$13)"
Wenn ich in die Zelle P13 die Formel "=MITTELWERT($D$13:$O$13)" einsetze und dann die Bedingung verwende:
oBedingung(1).Value = "P13" funktioniert es.
Leider bin ich mit diesem Notbehelf nicht ganz glücklich. Ich muß halt diese Spalte ausblenden.
Moritz

englische Funktionen

Verfasst: Fr, 15.02.2008 13:19
von moritz
Hallo, ganz konnte ich das Problem zwar noch nicht lösen, wen´s aber interessiert:
man muß unbedingt die englischen Funktionsnamen nutzen, also Average statt Mittelwert.
Moritz

Re: bedingte Formatierung

Verfasst: Fr, 15.02.2008 15:38
von moritz
So funktioniert es:

oBedingung(1).Value = "AVERAGE(" & CellAddressreadableAbsolut(sSheet, 3,lZeile) & ":" & CellAddressreadableAbsolut(sSheet, oZelle.CellAddress.Column,lZeile) & ")"


function CellAddressreadableAbsolut(sSheet As string, iCRl As Integer, iCRo As Integer) As string
Dim sColumname As String
oDoc = ThisComponent
oSheet = oDoc.Sheets.getByName ( sSheet )
oCell1 = oSheet.getCellByPosition (iCRl, iCRo )
sColumnname=ocell1.getColumns.getByIndex(0).getName()
CellAddressreadableAbsolut = "$" & sSheet & ".$" & sColumnname & "$" & ltrim(str(iCRo+1))
end function