Range

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

Moderator: Moderatoren

hawe
****
Beiträge: 151
Registriert: Di, 05.08.2008 19:47

Range

Beitrag 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
Gruss HW
Win7/SuSe 11.2 - LO 3.3
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Range

Beitrag 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
Zuletzt geändert von komma4 am Sa, 09.08.2008 00:19, insgesamt 1-mal geändert.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
hawe
****
Beiträge: 151
Registriert: Di, 05.08.2008 19:47

Re: Range

Beitrag 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
Gruss HW
Win7/SuSe 11.2 - LO 3.3
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Range

Beitrag 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
Antworten