Calc VBA Cell.Formula = "...", Formel nicht ausgewertet

Hallo,

ich möchte mit folgenden Befehlen Formeln in ein Sheet eintragen:

rem ab Zelle E2 Formeln für Breite/Höhe/Format/Preisbasis/Preis einfügen --
Cell = Sheet.getCellRangeByName("E2")
Cell.Formula = "=WENNFEHLER(RUNDEN(ZAHLWERT(REGAUS(A2;"".*_(rund |oval ){0,1}([:digit:]+,{0,1}[:digit:]*)(x([:digit:]+,{0,1}[:digit:]*)){0,1}[^[:digit:]].*"";""$2"");"","");0);0)"

Cell = Sheet.getCellRangeByName("F2")
Cell.Formula = "=WENNFEHLER(RUNDEN(ZAHLWERT(REGAUS(A2;"".*_(rund |oval ){0,1}([:digit:]+,{0,1}[:digit:]*)(x([:digit:]+,{0,1}[:digit:]*)){0,1}[^[:digit:]].*"";""$4"");"","");0);0)"

Cell = Sheet.getCellRangeByName("G2")
Cell.Formula = "=WENNS(UND(E2=0;F2=0);"""";REGAUS(A2;"".*_(rund |oval ){0,1}.*"";""$1"")=""rund "";""rund"";REGAUS(A2;"".*_(rund |oval ){0,1}.*"";""$1"")=""oval "";""oval"";E2=F2;""quadratisch"";E2>F2;""quer"";1;""hoch"")"

Cell = Sheet.getCellRangeByName("H2")
Cell.Formula = "=WENNS(NICHT(ISTFEHLER(FINDEN(""Technik|Druck"";B2;1)));""Druck"";NICHT(ISTFEHLER(FINDEN(""Material|Leinwand"";B2;1)));""Leinwand"";1;""Papier"")"

Cell = Sheet.getCellRangeByName("I2")
Cell.Formula = "=RUNDEN(WENN(H2=""Papier"";(E2+F2)*7,5/2;WENN(H2=""Leinwand"";(E2+F2)*7,5;0));0)"

Das Ergebnis im Sheet sieht danach aber folgendermaßen aus:
#NAME? #NAME? #NAME? #NAME? #NAME?

Wenn ich allerdings dann mit fx in einer der Zellen den Formelassistenten aktiviere zeigt der mir die Formel als korrekt an und liefert auch das erwartete Ergebnis.

Nach dem Schließen des Formelassistenten wird das korrekte Ergebnis dann auch in der Zelle angezeigt.

Was mache ich falsch?

Gunther King

OS:
Windows 11

LibreOffice:
Version: 7.5.0.3 (X86_64) / LibreOffice Community
Build ID: c21113d003cd3efa8c53188764377a8272d9d6de
CPU threads: 12; OS: Windows 10.0 Build 22621; UI render: default; VCL: win
Locale: de-AT (de_AT); UI: de-DE
Calc: CL threaded

[edit erAck: formatted code as code, please see This is the guide - How to use the Ask site? - #6 by erAck]

You are using Formula with localized function names. Since 7.2 you must use FormulaLocal instead. See LibreOffice 7.2 Community: Release Notes - The Document Foundation Wiki . However, I’d rather translate the expression…

What happens is, expecting English names and separators the compiler can’t resolve, each error token name is displayed. When editing or in Function Wizard the same localized name tokens are recompiled in your localized environment and work.

So this should also work:

Formula = "=IFERROR(ROUND(NUMBERVALUE(REGEX(A2;"".*_(rund |oval ){0,1}([:digit:]+,{0,1}[:digit:]*)(x([:digit:]+,{0,1}[:digit:]*)){0,1}[^[:digit:]].*"";""$2"");"","");0);0)"

Thank you for this explanation ( and for formatting my code).
With FormulaLocal everything works fine.

Gerade bemerkt, dass dies in der Deutsch category war… bin so Englisch gewohnt; egal, Hauptsache Antwort war hilfreich :slight_smile: