Seite 1 von 1

Zellbereich auslesen

Verfasst: Mo, 17.11.2008 16:49
von Hömmelmann
Hallo,


ich möchte einen Zellbereich (z.B. A1:A4) in eine indizierte Variable z.B. Inhalt (4) einlesen.
Ich kenne dafür natürlich die Möglichkeit, die Zellen einzeln auszulesen und in die Variable zu übertragen.
Es müsste aber doch auch eine Möglichkeit geben, den ganzen Bereich in einem Rutsch rüber zu bringen.


Danke für Antwort

Friedhelm

Re: Zellbereich auslesen

Verfasst: Mo, 17.11.2008 17:36
von komma4
Wenn Du mit Inhalt(4)*** eine Arrayvariable meinst:

Code: Alles auswählen

aInhalt = _
ThisComponent.Sheets().getByName( "Tabelle2" ).getCellRangeByName( "A1:A4" ).getDataArray()
For i = LBound( aInhalt ) To UBound( aInhalt )
   xray aInhalt( i ) 
Next i
getDataArray() gibt ein Array von Arrays zurück!

War dies das Gesuchte, Friedhelm? Wenn ja, dann findest Du ein Beispiel für get-/setDataArray() bspw. im Code meiner Extension OOoDIL - DokumentInfoListe

Hilft das weiter?



***
A1 bis A4 sind vier Zellen, eine OOo StarBasic Dimensionierung beginnt bei 0 (default), also wäre DIM Inhalt(3) ausreichend

Re: Zellbereich auslesen

Verfasst: Mo, 17.11.2008 18:52
von Hömmelmann
Danke erstmal.

So ganz ist mir allerdings noch nicht geholfen (das Brett vor meinem Kopf ist deutsche Eiche!):

Ja, ich meine mit Inhalt(4) natürlich eine Array-Variable

Bei der Ausführung deines Codes bekomme ich bei der Zeile: "For i = LBound( aInhalte ) To UBound( aInhalte )" einen Laufzeitfehler: Objektvariable nicht belegt.

Kann ich davon ausgehen, dass in deinem Code der Inhalt der Zellen A1 bis A4 dann in der Array-Variable "aInhalte(1)" bis "aInhalte(4)" gespeichert ist?


Gruß, Friedhelm

Re: Zellbereich auslesen

Verfasst: Mo, 17.11.2008 19:09
von komma4
Da war ein Tippfehler im Code... der sowieso nur läuft, wenn Du hast.

Arrays sind null-basiert aInhalt(0) bis aInhalt(3).
Sieh Dir den genannten Beispielcode an.

Re: Zellbereich auslesen

Verfasst: Mo, 17.11.2008 19:19
von Hömmelmann
Wir kommen uns langsam näher:

jetzt läufts bis "xray aInhalt( i )"
Dann meldet OO eine nicht definierte Sub- oder Function-Prozedur.
Ich muss gestehen, mir sagt xray auch nichts.


Friedhelm

Re: Zellbereich auslesen

Verfasst: Mo, 17.11.2008 21:03
von turtle47
Hallo Friedhelm,

mit

Code: Alles auswählen

getDataArray()
holt man sich automatisch ein mehrdimensionales Array,
auch wenn man nur eine Spalte einliest!
Dieses muss man zuerst auf die erste Dimension (0) "runterschrauben".

Code: Alles auswählen

Sub Array_auslesen()
	x  = ThisComponent.Sheets().getByIndex(0).getCellRangeByName("A1:A4").getDataArray()
	for i = 0 to UBound(x)
	Daten = x(i)(0)' 0 = erste Dimension
	msgbox daten 
	next i
End Sub
Das Thema wurde hier schon einmal behandelt.

Viel Erfolg.

Jürgen

Re: Zellbereich auslesen

Verfasst: Mo, 17.11.2008 23:06
von komma4
Ohne XRay kommst Du nicht weit, Friedhelm.

Re: Zellbereich auslesen

Verfasst: Di, 18.11.2008 07:54
von Hömmelmann
Hallo,
jetzt hab' ich es begriffen und es funktioniert auch.

Danke,
Friedhelm

Re: Zellbereich auslesen

Verfasst: Di, 18.11.2008 12:32
von turtle47
Hi Friedhelm,
Hömmelmann hat geschrieben:jetzt hab' ich es begriffen und es funktioniert auch.
Was hast Du jetzt begriffen?
komma4 hat geschrieben:Ohne XRay kommst Du nicht weit, Friedhelm.
oder
turtle47 hat geschrieben:mit
Code: Alles auswählen
getDataArray()holt man sich automatisch ein mehrdimensionales Array,
auch wenn man nur eine Spalte einliest!
Dieses muss man zuerst auf die erste Dimension (0) "runterschrauben".
Jürgen