Calc: Einfügen andere Tabelle am Spaltenende

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

Moderator: Moderatoren

turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Calc: Einfügen andere Tabelle am Spaltenende

Beitrag von turtle47 »

Hi,
Christian1432 hat geschrieben:das die eingegebenen Kriterien in eine andere Tabelle ans Spaltenende einfügt.
Da Du uns leider im Unklaren lässt von welcher Stelle aus und welcher Bereich kopiert werden soll, und ab einem gewissen Alter die
hellseherischen Fähigkeiten im Quadrat abnehmen konnte man hier nur wieder raten.

Code: Alles auswählen

Option Explicit
Sub CopyRange
Dim oDoc as Object, oSheet_Q as Object, oSheet_Z as Object, z as Object, c as Object
Dim getFirstEmptyRowInColumn as Object
Dim oRow as integer
Dim x()
	oDoc = thisComponent
	oSheet_Q = oDoc.Sheets().getByName("Tabelle1")
	oSheet_Z = oDoc.Sheets().getByName("Tabelle2")
	x = oSheet_Q.getCellRangeByName("C5:C11").getdataArray  
	c = oSheet_Z.getCellRangeByName("A1:A5000").queryEmptyCells
	getFirstEmptyRowInColumn = Split(c.RowDescriptions(0)," ")   
	oRow = getFirstEmptyRowInColumn(1)
	z = oSheet_Z.getCellRangeByName("A" & oRow & ":A" & oRow +6)
	z.setdataArray(x)
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
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Calc: Einfügen andere Tabelle am Spaltenende

Beitrag von turtle47 »

Christian1234 hat geschrieben:ich wollte mich vergewissern ob ich das richtig verstanden habe
Alles richtig verstanden.

Ergänzung: In "Tabelle2" Zelle "A1" muss eine Überschrift oder sonst was schon stehen!
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
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Calc: Einfügen andere Tabelle am Spaltenende

Beitrag von turtle47 »

Christian1234 hat geschrieben:dazu makiert er noch folgendes als fehler.....

Code: Alles auswählen
z.setdataArray(x)
Ich hatte schon geahnt das dieses kommt. 8)

Dann stimmt der ausgelesene und der zu beschreibende Bereich in der Grösse nicht überein.
Die Bereiche müssen immer die gleiche Anzahl von Zeilen und Spalten haben!
turtle47 hat geschrieben: x = oSheet_Q.getCellRangeByName("C5:C11").getdataArray <-- Sind 7 Zellen
z = oSheet_Z.getCellRangeByName("A" & oRow & ":A" & oRow +6) <-- Ist die gefundene Zelle + 6 Zellen = 7 Zellen
Ok :?:
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
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Calc: Einfügen andere Tabelle am Spaltenende

Beitrag von turtle47 »

Christian1234 hat geschrieben:könntest du mir sagen was da falsch is
Aber gerne doch.

In diesem Fall kopierst Du einen Zeilenbereich. Dann sieht das wie folgt aus:

Code: Alles auswählen

z = oSheet_Z.getCellRangeByName("A" & oRow & ":E" & oRow)
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
Stephan
********
Beiträge: 12368
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Calc: Einfügen andere Tabelle am Spaltenende

Beitrag von Stephan »

Immer die Exception: Arguments len differ
Naja, der Code ist falsch.
Das ist doch im Konkreten auc einfach nachzuvollziehen wenn Du Deine Code-Zeile:

Code: Alles auswählen

z.setDataArray() = afeld
mit der Methode .setDataArray() in der IDL-REferenz vergleichst:

Code: Alles auswählen

setDataArray( [in] sequence< sequence< any > >  aArray );


Ein, zumindest kurzes, Reinschauen in die IDL-Referenz lohnt sich in solchen Fällen doch eigentlich immer.

siehe:
http://api.openoffice.org/docs/common/r ... tDataArray

.SetDataArray() ist einfach keine Eigenschaft, der man einen Wert (hier also afeld) zuweisen kann, sondern eine Methode, von außen schon erkenntlich an .set

Die richtige Zeile muß lauten:

Code: Alles auswählen

z.setDataArray(afeld)
oder:

Code: Alles auswählen

z.setDataArray(afeld())


Gruß
Stephan
Antworten