Seite 1 von 1
Range
Verfasst: Fr, 08.08.2008 10:47
von hawe
Hallo zusammen,
ich habe einen Range zu bearbeiten, z.B.
Code: Alles auswählen
oCalc = ThisComponent
Worksheetfunction = createunoservice("com.sun.star.sheet.FunctionAccess")
oRange=oCalc.Sheets(0).getCellRangeByName("B2","C3","D4","E5","F6","G7","H8")
s = Worksheetfunction.callFunction("SUM",array(oRange))
oRange=oCalc.Sheets(0).getCellRangeByName("B2,C3,D4,E5,F6,G7,H8")
s = Worksheetfunction.callFunction("SUM",array(oRange))
Beide Konstruktionen scheitern.
Zuerst wird nur B2 in oRange übernommen und zweitens erzeugt eine Exception...
Weiss jemand wie es geht oder ist das Bug?
Gruß HW
Hans W. Hofmann
Re: Range
Verfasst: Fr, 08.08.2008 14:21
von komma4
Hans,
.getCellRangeByName( "B2" ) oder
.getCellRangeByName( "B2:D4" )
Mit der Methode kann nur ein zusammenhängender Bereich gewählt werden.
(und Du weisst, dass Du mit Basic auch summieren kannst:)
Code: Alles auswählen
idxSpalte = 1 ' Spalte B
idxZeile = 1 ' Zeile 2
lSumme = 0
for i = 0 to 6
lSumme = lSumme + oCalc.Sheets(0).getCellByPosition( idxSpalte + i , idxZeile + i ).getValue()
next i
msgbox "Summe ist: " & lSumme
Ist Dir damit gedient?
edit: falsches
getCellRangeByName im Code durch
getCellByPosition gewechselt
Re: Range
Verfasst: Fr, 08.08.2008 16:32
von hawe
Hallo Winfried,
Naja, mit ner Schleife hab ichs ersatzweise gelöst - klar.
Eleganter wäre den Range in einem Rutsch zu summieren. Das ist ein Bug! Schließlich werden Bereiche wie
A1:H1,B2:B10 ja auch unterstützt - wie so dann net einzelne Zellen?
Ich portiere gerade VBA-Code und da geht sowas anstandslos...
Gruß HW
Hans W. Hofmann
Re: Range
Verfasst: Fr, 08.08.2008 17:50
von Stephan
Schließlich werden Bereiche wie
A1:H1,B2:B10 ja auch unterstützt
Im Sinne Deines Beispiels? Dann wäre es gut wenn Du dafür einmal einen Code postest der das demonstriert, vielleicht finden wir dann gemeinsam eine Lösung.
Ein funktionierende Lösung ist in jedem Fall die Bereiche einzeln an das Parameterarray zu übergeben, was in Deinem konkreten Fall (wegen der 'geordneten' Zellen) auch mittels Schleife unaufwendig zu schreiben wäre)
Ich portiere gerade VBA-Code und da geht sowas anstandslos...
schön für Excel, aber irrelevant für Calc - OOo erhebt keinen Anspruch ein Clone von MS Office zu sein, weshalb solche Vergleiche allenfalls für einen allgemeinen Leistungsvergleich Bedeutung haben, niemals auf konkreter funktioneller Ebene.
Verständlicher gesagt:
Daraus das bestimmte Dinge in MS Office funktionieren ist nicht abzuleiten das sie in OOo auch funktionieren müssen, wie man gleichfalls nicht sagen kann das es Dinge die in MS Office nicht funktionieren auch nicht in OOo gibt.
Gruß
Stephan