Zelleninhalt in eine Liste Kopieren

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Zelleninhalt in eine Liste Kopieren

Re: Zelleninhalt in eine Liste Kopieren

von DPunch » Mi, 07.07.2010 17:44

Aloha
Stephan hat geschrieben:sondern es sollte reichen statt .Value oder .String einfach .FormulaLocal zu nutzen
Hast absolut Recht, unter diesen simplen Bedingungen ist das die beste Lösung - vor allem, da man mit FormulaLocal im Gegensatz zum DataArray auch z.B. Datumsangaben "korrekt" kopiert (DataArray nimmt dabei den internen Wert des Datums).

Re: Zelleninhalt in eine Liste Kopieren

von Stephan » Mi, 07.07.2010 08:49

Die Unterscheidung sollte man mit einem DataArray doch umgehen können, oder?
Funktioniert, ist aber für einzelne Zellen, unter benannten Randbedingungen, eher nicht nötig, sondern es sollte reichen statt .Value oder .String einfach .FormulaLocal zu nutzen (geht natürlich nur unter den genannten Randbedingungen, also das die Zellen keine Formeln enthalten).


Gruß
Stephan

Re: Zelleninhalt in eine Liste Kopieren

von komma4 » Mi, 07.07.2010 06:00

DPunch hat geschrieben:Die Unterscheidung sollte man mit einem DataArray doch umgehen können, oder?
Ja, guter Vorschlag (wollte mir es halt einfach machen 8) )


Habe jetzt auch nochmal nach dem Cursor für einen Bereich geschaut, damit kann man die SCHLEIFE umgehen.


Variante2:

Code: Alles auswählen

Sub de39960_2

oDok = ThisComponent
oBlatt = oDok.Sheets.getByName( "Tabelle7" )
letzteZeile = oBlatt.getRows().getCount()

oBereich = oBlatt.getCellRangeByName( "B1:B" & letzteZeile )

oCursor = oBlatt.createCursorByRange( oBereich )
oCursor.gotoEndofUsedArea( TRUE )

If oCursor.Rows.Count = letzteZeile Then
   Print "Spalte ist voll - kann nicht kopieren!"
Else
   aQuellData = oBlatt.getCellByPosition( 0, 0 ).getDataArray()
   oBlatt.getCellByPosition( 1 , oCursor.Rows.Count ).setDataArray( aQuellData ) 
End If

End Sub


Schlagwörter für die Suchfuktion:
"letzte Zelle", "letzte Zeile", "gefüllt im Bereich"

Re: Zelleninhalt in eine Liste Kopieren

von DPunch » Di, 06.07.2010 19:09

Aloha
komma4 hat geschrieben:Folgender Code kopiert Werte (nummerische Eingaben). Handelt es sich um Zeichen(-ketten), dann ist im Code get-/setValue durch get-/setString zu ersetzen.
Die Unterscheidung sollte man mit einem DataArray doch umgehen können, oder?

Code: Alles auswählen

	oDok = ThisComponent
	oBlatt = oDok.Sheets.getByName( "Tabelle7" )
	oCursor = oBlatt.createCursor()
	oCursor.gotoEndofUsedArea( TRUE )
	aAddresse = oCursor.getRangeAddress()
	nLetzteZeile = aAddresse.EndRow
	aQuellData = oBlatt.getCellByPosition( 0, 0 ).DataArray
	
	If Len(oBlatt.getCellByPosition(1,nLetzteZeile).String) = 0 Then
		For i = 0 To nLetzteZeile
			If Len(oBlatt.getCellByPosition( 1 , i ).String) = 0 Then
				oBlatt.getCellByPosition( 1 , i ).setDataArray(aQuellData)
				Exit Sub
			End If
		Next i
	Else
		oBlatt.getCellByPosition( 1 , nLetzteZeile+1 ).setDataArray(aQuellData)
	End If

Re: Zelleninhalt in eine Liste Kopieren

von komma4 » Di, 06.07.2010 18:23

Schleifen?


Folgender Code kopiert Werte (nummerische Eingaben). Handelt es sich um Zeichen(-ketten), dann ist im Code get-/setValue durch get-/setString zu ersetzen.

Einschränkung: auf der Seite gibt es nur die Eingabe in A1 und die Fortschreibung in B.
Sind mehr Daten (Spalten) vorhanden, muss ich noch ein bissel basteln.

Das klappt, bis die letzte Zeile gefüllt ist.


Tabellennamen anpassen!

Code: Alles auswählen

Sub de39960

oDok = ThisComponent
oBlatt = oDok.Sheets.getByName( "Tabelle7" )
oCursor = oBlatt.createCursor()
oCursor.gotoEndofUsedArea( TRUE )
aAddresse = oCursor.getRangeAddress()

oBlatt.getCellByPosition( 1 , aAddresse.EndRow + 1 ).setValue( oBlatt.getCellByPosition( 0, 0 ).getValue() )

End Sub

Hilft Dir das?

Nach oben