SetArray() tut nicht was es soll

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

Moderator: Moderatoren

tunix_xl
**
Beiträge: 41
Registriert: Di, 27.11.2007 17:09

SetArray() tut nicht was es soll

Beitrag von tunix_xl »

Nabend allerseits,

Mit dem hier von Jürgen geposteten Makro:

Code: Alles auswählen

Sub mitarrayrechnen()
 on error goto weiter
   oRange  = ThisComponent.Sheets().getByIndex(0).getCellRangeByName("A1:A10000")
   oRange1 = ThisComponent.Sheets().getByIndex(0).getCellRangeByName("B1:B10000")
   oData() = oRange.getDataArray()
   For i = LBound(oData()) To UBound(oData())
   oRow() = oData(i)
   For j = LBound(oRow()) To UBound(oRow())
''   oRow(j) = oRow(j) * 5

   oRow(j) = "=(H" & i+1 & "-D" & i+1 & ")/H" & i+1 &"*-1"
   Next
   Next
 weiter:
   oRange1.setDataArray(oData())
End Sub   
möchte ich Formeln aus einem Array an eine Tabelle übergeben. Klappt auch fast - hier das Ergebnis
tab.png
tab.png (34.98 KiB) 731 mal betrachtet
Wie im Bild zu sehen werden die Formeln korrekt übernommen, bei click in die Eingabezeile zeigt er mir auch, welche Zellen berechnet werden sollen - nur rechnen will er nicht.

Was übersehe ich?

Für jeden Tipp dankbar
Grüßt
tunix
Toshiba Satelite L20 ubuntu 09.04 / 32bit / ooffice3.1 / LAMP
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: SetArray() tut nicht was es soll

Beitrag von turtle47 »

Hallo Tunix,
tunix_xl hat geschrieben:Mit dem hier von Jürgen geposteten Makro:
tunix_xl hat geschrieben:nur rechnen will er nicht
hast Du mich erst mal ans Grübeln gebracht. Habe ich das wirklich so geschrieben?
Gott sei Dank nein! :D

Das kann so auch nicht funktionieren, denn du hast den Code dahin gehend geändert, dass er keine Berechnung durchführt und diese in die Zellen einträgt, sondern Formeln als reinen Text in die Zellen einfügt.

Nimm folgenden Code, dann klappt es auch mit der Berechnung: :wink:

Code: Alles auswählen

Sub Formel_Zelle()
   For i = 1 to 200
   oCell = ThisComponent.Sheets().getByIndex(0).getCellRangeByName("B"& i)
   fFormula= "=(H" & i & "-D" & i & ")/H" & i &"*-1"
   oCell.formulalocal = fFormula
   Next
End Sub  
Viel Erfolg.

Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
tunix_xl
**
Beiträge: 41
Registriert: Di, 27.11.2007 17:09

Re: SetArray() tut nicht was es soll

Beitrag von tunix_xl »

Hallo Jürgen,
ja, die eine Zeile hatte ich verändert - in der Hoffnung, dass der Eintrag von Formeln mittels Array schneller geht ( was ja auch tatsächlich der Fall ist, leider wird der übergebene String nicht als Formel erkannt...).
War wohl ein Denkfehler von mir.
Den von dir darunter beschriebenen Weg ging ich vor der Idee mit dem Array, klappt auch, war mir nur zu langsam...
Vielen Dank und schönen Sonntag
t.

Nachtrag: Habe es jetzt mit "uno:Copy" & "uno:Paste" gelöst. Passt. Nochmal danke fürs Lösen der "Denkblockade" :wink:
Toshiba Satelite L20 ubuntu 09.04 / 32bit / ooffice3.1 / LAMP
Antworten