Hallo,
Gast hat geschrieben: Bzw. erst dann wenn mit gotoEndOfUsedArea an das Ende gesprungen wird, wobei das ja dann anders als bei gotoEnd dann auch noch das ganze Tabellenblatt betrifft und nicht nur bis zur ersten leeren Spalte/Zeile.
Nein, es betrifft nicht das ganze Tabellenblatt, sondern den benutzen, also mit Daten gefüllten Bereich, eben UsedArea. Wenn bei Dir also .gotoEndOfUsedArea anders reagiert als .gotoEnd, dann steht bei Dir noch etwas außerhalb des eigentlichen zusammenhängend gefüllten Tabellenbereiches. Dieses Etwas muss kein Wert sein. es reicht, wenn z.B. ein Zellhintergrund oder ein Zellrahmen formatiert ist.
Gast hat geschrieben:wofür braucht man das ScCellCursorObj wenn man nicht an die Daten heran kommt die man auswählt?
Natürlich kommt man heran, siehe mein Beispiel.
Mit .gotoEnd() setzt Du aber den Cursor ja nur *auf* die letzte ohne Lücke gefüllte Zelle. Im Cursor steht dann also *eine* Zelle und an deren DatenArray kommst Du auch per oCursor.getDataArray(), aber eben nur an die *eine* Zelle.
Die Frage ist: Warum steht bei Dir in der Tabelle etwas *außerhalb* des eigentlichen zusammenhängend gefüllten Tabellenbereiches? So etwas sollte man möglichst vermeiden, also nicht mehrere Tabellen in einem Tabellenblatt erfassen. Dafür sind die einzelnen Tabellenblätter da. Auch "Nebenrechnungszellen" sollte man auf einen eigenen Tabellenblatt verwalten. Das erleichtert dann auch das Drucken.
Ansonsten hast Du ja jetzt eine Lösung. Mit .gotoEnd findest Du *die* letzte zusammenhängend gefüllte Zelle, ausgehend vom Cursor, und berechnest dann eben nach DPunch's Methode einen CellRange aus erster und gefundener letzter Zelle.
viele Grüße
Axel