Seite 1 von 1

SetArray() tut nicht was es soll

Verfasst: So, 01.03.2009 01:05
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) 732 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

Re: SetArray() tut nicht was es soll

Verfasst: So, 01.03.2009 06:22
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

Re: SetArray() tut nicht was es soll

Verfasst: So, 01.03.2009 12:41
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: