ich probiere gerade eine Kopierroutine zu schreiben, die mir anhand der Selektionen in einem Blatt alle darin enthaltenen Zeilen in ein anderes Blatt kopiert.
Dabei habe ich eine Fallunterscheidung, die je nach einzelner Zelle/Zeile, einer selektierten Range oder mehrerer selektierter Ranges unterscheidet.
Leider scheint die Prüfung auf eine selektierte Range nicht zu klappen, daher wollte ich mir mal die supported Services ausgeben lassen. Wenn ich allerdings getSupportedServiceNames() im Rahmen einer MsgBox verwende, bekomme ich immer den Fehler: "Objektvariable nicht belegt" - selbst wenn ich nur eine Zelle auswähle (bei dieser klappt die Prüfung auf supported service!). Denke mal, dass die Ausgabe anders funktionieren muss.
Das If, das auf ein Range prüft wird nicht durchlaufen - getImplementationName() im Falle der Selektion mehrerer Zellen einer Spalte innerhalb einer Range gibt aus: ScCellRangeObj
Was ist da noch falsch? Wieso läuft die Prüfung auf Range noch falsch und was bedeutet der Fehler mit der Objektvariable, wenn ich mir die Services ausgeben lassen will?
Der Debug der Services zeigt, dass bei Selektion zumindest XSheetCellRange enthalten ist, warum aber nicht auch SheetCellRange?
Dank euch schon mal!
Ciao
HIer noch der Code-Ausschnitt:
Code: Alles auswählen
oDoc = ThisComponent
oSel = oDoc.getCurrentSelection()
srcSheet = odoc.currentcontroller.activesheet
srcRangeAddress = srcSheet.getRangeAddress()
If Not isNull(oSel) Then
' only one cell selected for copying
If oSel.supportsService("com.sun.star.sheet.SheetCell") Then
'MsgBox "One Cell selected and it contains: " & oSel.getString() & " " & oSel.CellAddress.Row
srcRangeAddress.StartRow = oSel.CellAddress.Row
srcRangeAddress.EndRow = oSel.CellAddress.Row
srcSheet.copyRange(tgtRangeAddress, srcRangeAddress)
End If
If oSel.supportsService("com.sun.star.sheet.SheetCellrange") Then
MsgBox "One Cell Range selected"
srcRangeAddress.StartRow = oSel.CellRangeAddress.StartRow
srcRangeAddress.EndRow = oSel.CellRangeAddress.EndRow
srcSheet.copyRange(tgtRangeAddress, srcRangeAddress)
End If
If oSel.supportsService("com.sun.star.sheet.SheetCellRanges") Then
MsgBox "Multiple Cell Ranges selected. Total=" & oSel.getCount()
End If
MsgBox "ServiceNames: " & oSel.Dbg_SupportedInterfaces
Else
MsgBox "Current Selection is null"
End If