Probleme mit Calc-Formeln

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

Moderator: Moderatoren

Hömmelmann
****
Beiträge: 119
Registriert: Di, 28.11.2006 19:44
Wohnort: Meppen

Probleme mit Calc-Formeln

Beitrag von Hömmelmann »

Hallo,

mein Problem besteht erst in neuerer Zeit. In den Versionen 2.... von OO gab es die Schwierigkeiten nicht.

Ich weise einigen Zellen in einem Sheet einer Calc-Datei per Makro eine Formel zu. Diese Liste enthält dann die Feiertage eines Jahres.
Der Code dazu lautet z.B.

...
sheet.getcellbyposition(0,3).formula="=IF(ISLEAPYEAR(A1);A1+121;A1+120)"
...
In A1 steht dabei das gültige Datum für den 1. Januar des aktuellen Jahres.

Die Formel müßte (und hat in der Version 2) unter Berücksichtigung des Schaltjahres den 1. Mai zeigen.
Jetzt steht in der Zelle "#Name?". Das IF wird korrekt in WENN übersetzt, aber aus ISLEAPYEAR wird nicht ISTSCHALTJAHR .
Die deutsche Funktion wird aber auch nicht akzeptiert.

Kann mir da jemand einen Tipp geben, wie diese Kuh vom Eis kommt?


Danke schon mal..

Friedhelm
Charly
*****
Beiträge: 450
Registriert: Di, 20.01.2004 13:14
Wohnort: München

Re: Probleme mit Calc-Formeln

Beitrag von Charly »

Hallo Hömmelmann!

Da ich meistens die Englischen Bezeichnungen nicht kenne, verwende ich immer die Deutsche Funktionen. Für die Eingabe in der Zelle schreibt man dann statt Zelle.Formula: Zelle.FormulaLocal.
Also probiers einmal mit folgender Formel:

Code: Alles auswählen

sheet.getcellbyposition(0,3).formulaLocal ="=Wenn(IstSchaltjahr(A1);A1+121;A1+120)"
Gruß
Charly
Hömmelmann
****
Beiträge: 119
Registriert: Di, 28.11.2006 19:44
Wohnort: Meppen

Re: Probleme mit Calc-Formeln

Beitrag von Hömmelmann »

Ja, das funktioniert einwandfrei.

Danke vielmals.


Friedhelm
Karolus
********
Beiträge: 7534
Registriert: Mo, 02.01.2006 19:48

Re: Probleme mit Calc-Formeln

Beitrag von Karolus »

Hallo
Der 1.Mai geht doch einfacher mit:

Code: Alles auswählen

sheet.getcellbyposition(0,3).formulaLocal ="=DATUM(JAHR(A1);5;1)"

Code: Alles auswählen

sheet.getcellbyposition(0,3).formula ="=DATE(YEAR(A1);5;1)"
oder besser gleich per Runtime-funktion:

Code: Alles auswählen

sheet.getcellbyposition(0,3).formulalocal = DateSerial(year(sheet.getcellbyposition(0,0).value),5,1)
Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Antworten