Hallo Volker,

[1] Du musst Dich wirklich nicht entschuldigen. Ich habe Dir zu danken, dass Du nach einem langen Arbeitstag noch die Zeit gefunden hast, mir diesen hilfreichen Hinweis zu geben !!!

[2] Dein heutiger Hinweis mit "ConditionalFormatLocal" hat das Problem gelöst (s.u.). Ich hätte es eigentlich ahnen können, denn im Kontext der Zuweisung einer Formel an eine Zelle ( beispielsweise in meinem Makro: oZ_DL.FormulaLocal = TB_DL_Pf_Dtf ) war mir das "Local" schon "über den Weg gelaufen", hatte es aber für den anderen Kontext ( bedingte Formatierung ) "nicht mehr im Hinterkopf". Dummerweise war es auch noch so, dass beim Pitonyak bzw. Deiner Übersetzung davon, unter "bedingte Formatierung" (S.474) kein Beispiel für eine Formel angegeben ist. So hatte ich da nicht weiter gesucht, sondern beim Dannenhoefer ( http://www.dannenhoefer.de/faqstarbasic/BedingteFormatierungInsert.html#BedingteFormatierungInsert ) nachgeschaut - meine üblich Strategie: Pitonyak/Lenhardt und/oder Dannenhoefer - meistens finde ich dann eine Lösung. Dummerweise hat der Dannenhoefer in seinem Beispiel einen englischsprachigen Formelausdruck genutzt und so war's da auch nichts mit einem "Local"-Hinweis.

[3] Ich freue mich, mal mit dem Übersetzer von Pitonyaks "Makro-Standardwerk" Kontakt zu haben: EIN MEGA-GROSSES DANKESCHÖN FÜR DIESE TOLLE ÜBERSETZUNG !!!

[4] Ich arbeite zurzeit mit der Version 20.02.18. Wie ich eben auf https://www.pitonyak.org/oo.php gesehen habe, arbeitet Pitonyak mittlerweile an der 4.0: "[...] Started the fourth edition. I am working my way through it. [...]"

[5] Vielleicht könnte man ja mal irgendwann "bedingte Formatierung" (S.474) um ein Beispiel mit einer Formel ergänzen.

Nochmals ganz herzlichen Dank,
sowohl für Deine Mail-Hinweise als auch für die "Pitonyak-Übersetzung",

viele Grüße (aus dem sonnigen Wittlich)
Hans-Werner :-))

[1] CALC-Tabelle

|1|4|1|4|
|2|3|2|3|
|3|2|3|2|
|4|1|4|1|

[2] BasicMakro

Sub BedingteFormatierung

Dim oBF as Object ' obj Bedingung Format (Conditional Format)
Dim oBFB as Object ' obj Bedingung Format Bereich
Dim oB(2) as New com.sun.star.beans.PropertyValue ' Bedingung (Condition)

oBFB = ThisComponent.Sheets(0).getCellRangeByPosition(0,0,3,3)
oBF = oBFB.ConditionalFormatLocal

oB(0).Name = "Operator"
oB(0).Value = com.sun.star.sheet.ConditionOperator.FORMULA
oB(1).Name = "Formula1"

oB(1).Value = "INDIREKT(ADRESSE(ZEILE();SPALTE()))-INDIREKT(ADRESSE(ZEILE()-1;SPALTE())) < 0"

oB(2).Name = "StyleName"
oB(2).Value = "Bad"

oBF.addNew(oB())
oBFB.ConditionalFormatLocal = oBF

End Sub

------ Originalnachricht ------
Von: "Volker Lenhardt" <volker.lenha...@uni-due.de>
An: "users@de.libreoffice.org" <users@de.libreoffice.org>
Gesendet: 23.06.2020 09:01:12
Betreff: Re: [de-users] BasicMakro - CALC - bedingte Formatierung wird nicht aktiviert

Hallo Hans-Werner,

entschuldige, dass ich gestern abend nicht auch die Alternative erwähnt habe, 
aber man braucht auch seinen Schlaf. Der Hinweis darauf, dass für Calc-Formeln 
in Basic-Makros (Zelleigenschaft Formula) im Prinzip die englischen Bezeichner 
notwendig sind, ist in OOME nur am Rande erwähnt (S. 458). Aber man kann auch 
die Zelleigenschaft FormulaLocal nutzen, in diesem Fall ConditionalFormatLocal 
(s. S. 467). Damit sollten die deutschen Bezeichner funktionieren. Ich bin 
gerade nicht am Desktop und kann es nicht testen. Probiere es einfach mal.

Was die Groß- und Kleinschreibung betrifft, so kann ich mir vorstellen, dass es 
nur so funktionieren kann, dass der Code intern vor der Ausführung entweder in 
Groß- oder in Kleinschreibung umgesetzt wird. Das mag für Basic anders sein als 
in Calc. Und dann kommt noch die Übersetzung in die lokale Sprache dazu. Ob man 
das im vorliegenden Fall als Bug bezeichnen soll? Ich meine, wenn man die 
entsprechende Zelleigenschaft korrekt anwendet, ist alles gut.

Schöne Grüße
Volker

 Am 23.06.2020 um 07:20 schrieb OoOHWHOoO <ooohwh...@t-online.de>:

 Hallo Volker,

 ganz herzlichen Dank für den Hinweis.

 Mit || oB(1).Value = 
"INDIRECT(ADDRESS(ROW();COLUMN()))-INDIRECT(ADDRESS(ROW()-1;COLUMN())) < 0" || 
funktioniert es, wie es sollte.

 Mit || oB(1).Value = 
"INDIREKT(ADRESSE(ZEILE();SPALTE()))-INDIREKT(ADRESSE(ZEILE()-1;SPALTE())) < 0" 
|| passiert folgendes:

 Nach Ausführung des Makros erscheint die Formel erst mal so || 
indirekt(adresse(zeile();spalte()))-indirekt(adresse(zeile()-1;spalte())) < 0 
|| unter [Format][Bedingte Formatierung].

 Nach manuell [Format] > [Bedingte Formatierung] > [Verwalten...] > [Bearbeiten] > 
[OK] > [OK] ist sie dann so || 
INDIREKT(ADRESSE(ZEILE();SPALTE()))-INDIREKT(ADRESSE(ZEILE()-1;SPALTE())) < 0 || unter 
[Format][Bedingte Formatierung] eingetragen und funktioniert.

 In einem Beispiel von 
http://www.dannenhoefer.de/faqstarbasic/BedingteFormatierungInsert.html#BedingteFormatierungInsert ist 
die Formel auch in englischer Sprache eingetragen || oCondition(1).Value = "SUM(A1:A10) > 
100" ||, was mir aber erst mal nicht wirklich aufgefallen ist. Bei Pitonyak/Lenhardt gibt es kein 
Beispiel mit "Formel".

 Aber weder bei Pitonyak/Lenhardt noch bei Dannenhöfer wird explizit darauf 
hingewiesen, dass in einer Formel englische Ausdrücke zu benutzen sind. Andere 
WEB-Quellen hatte ich nicht recherchiert.

 Ob BUG oder nicht, ist für mich als einen "Nicht-LO-Software-Entwickler" nicht wirklich 
entscheidbar, aber auffällig ist schon, dass die (deutsche) Formel nach manuell [Format] > [Bedingte 
Formatierung] > [Verwalten...] > [Bearbeiten] > [OK] > [OK] in Großbuchstaben umgewandelt 
wird und dann auch in deutscher Version funktioniert.

 Hinweise für Wolfgang:

 [1] Die Formel ist nicht fehlerhaft, sondern zur besseren Nachvollziehbarkeit aus dem 
"Zusammenhang gerissen" eines 1347 Zeilen langen Makros.
 [2] Normalerweise setze ich "bedingte Formatierungen" auch manuell, es kommt 
immer auf den Kontext der gesamten Anwendung an.

 Gruß
 Hans-Werner

 Hier noch der Vollständigkeit halber die ursprüngliche Problembeschreibung:

 [1] CALC-Tabelle

 |1|4|1|4|
 |2|3|2|3|
 |3|2|3|2|
 |4|1|4|1|

 [2] BasicMakro

 Sub BedingteFormatierung

 Dim oBF as Object ' obj Bedingung Format (Conditional Format)
 Dim oBFB as Object ' obj Bedingung Format Bereich
 Dim oB(2) as New com.sun.star.beans.PropertyValue ' Bedingung (Condition)

 oBFB = ThisComponent.Sheets(0).getCellRangeByPosition(0,0,3,3)
 oBF = oBFB.ConditionalFormat

 oB(0).Name = "Operator"
 oB(0).Value = com.sun.star.sheet.ConditionOperator.FORMULA
 oB(1).Name = "Formula1"

 oB(1).Value = 
"INDIREKT(ADRESSE(ZEILE();SPALTE()))-INDIREKT(ADRESSE(ZEILE()-1;SPALTE())) < 0" 
 ' ERROR-Variante

 ' oB(1).Value = "INDIRECT(ADDRESS(ROW();COLUMN()))-INDIRECT(ADDRESS(ROW()-1;COLUMN())) 
< 0" ' OKAY-Variante

 oB(2).Name = "StyleName"
 oB(2).Value = "Bad"

 oBF.addNew(oB())
 oBFB.ConditionalFormat = oBF

 End Sub

 --
 Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org
 Probleme? 
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
 Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
 Listenarchiv: https://listarchives.libreoffice.org/de/users/
 Datenschutzerklärung: https://www.documentfoundation.org/privacy


--
Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org
Probleme? 
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy


--
Liste abmelden mit E-Mail an: users+unsubscr...@de.libreoffice.org
Probleme? 
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy

Antwort per Email an