Joerg: OpenOffice.Calc: Per Script einer Zelle eine Formel zuweisen

Hallo,

ich habe gerade das Problem, dass ich einer Zelle eine Formel zuweisen möchte. Hier ein Auszug aus dem Code:

for i = 1 to 31
 if i < 10 then
  monat = "0" + i
 else
  monat = i
 end if

oSheet = oCalcDokument.getSheets().getByName(monat)
 oSelektion = oSheet.getCellRangeByName("A1")
 oSelektion = "=CONCATENATE(Optionen.C3; ' '; i; '. '; Optionen.C2; ' '; Optionen.D2)"
next

Wobei 'Optionen' der Name eines Tabellenblattes darstellt. Das Kopieren des Sheets läuft so durch, nur beim Einfügen der Formel in die Zelle kommt eine nichtssagende Fehlermeldung. Folgends wird in die Zelle eingetragen:

=VERKETTEN(#REF!.C3;" "; "1. "; #REF!.C2; " "; #REF!.D2)

Wie kann ich es besser machen?

Vielen Dank,
Joerg

  1. Moin,

    oSelektion = "=CONCATENATE(Optionen.C3; ' '; i; '. '; Optionen.C2; ' '; Optionen.D2)"

    Früher gab es dafür die Eigenschaft "Formula" für eine Zelle. Ob das heute noch so ist, kann ich nicht sagen.

    Probiers einfach mal aus:

    oSelektion.Formula = "=..."

    Grüße Marco

    --
    Ich spreche Spaghetticode - fließend.
  2. Hi,

    Das Kopieren des Sheets läuft so durch, nur beim Einfügen der Formel in die Zelle kommt eine nichtssagende Fehlermeldung.
    [...]
    Wie kann ich es besser machen?

    auf gar keinen Fall den Wortlaut der Fehlermeldung verraten, der könnte ja jemand anderem einen Hinweis geben. ;-)

    Folgends wird in die Zelle eingetragen:
    =VERKETTEN(#REF!.C3;" "; "1. "; #REF!.C2; " "; #REF!.D2)

    Also wird der Bezug auf das Tabellenblatt "Optionen" nicht erkannt. Heißt das Sheet wirklich so?
    Von Libre Office, das ja vergleichbar und kompatibel sein möchte, kenne ich es bei automatisch eingetragenen Zellbezügen so, dass der Name des Sheets in einfachen Anführungszeichen steht. Also in deinem Fall z.B.

    oSelektion = "=CONCATENATE('Optionen'.C3; ' '; i; '. '; 'Optionen'.C2; ' '; 'Optionen'.D2)"

    Zumindest steht's nachher so in der Zelle; ob das beim Scripting auch so sein muss, weiß ich nicht genau.

    Ciao,
     Martin

    --
    Man sollte immer wissen was man sagt
     - aber auf keinen Fall alles sagen, was man weiß.
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(