Hallo Kalle,
Du weisst schon was dies hier nachbildet?
Code: Alles auswählen
oSheet = oDoc.Sheets().getByName("Tabelle1")
oSheet = thiscomponent.getCurrentController.activesheet
oCellCursor = oSheet.createCursor()
oCellCursor.GotoEndOfUsedArea(false)
End_Row = oCellCursor.getRangeAddress.EndRow
Das ist das gleiche, als wenn Du den Zellcursor auf A1 setzt, und dann die Tasstenkombination "Strg" + "Ende" drückst.
Verschieb mal
in deiner Beispieldatei den Button im Blatt *Tabelle1* irgendwo in dem Bereich der ersten 4 Zeilen, also oberhalb deines farbbereiches. Danach drückst Du die eben genannte Tastenkombination. Und Du wirst selber sehen wohin der Zellcursor springt.
Drück den Button, bestätige deine Sicherheitsabfrage, und Du wirst sehen was passiert.
Danach drückst Du wieder die Tastenkombination, und Du siehst wohin der Zellcursor springt.
Das ist der Beweis, das die Zelle trotz ohne Text, und nur mit Farbe, für Calc eine benutzte Zelle ist. Normalerweise heißt es ja in Calc, das eine Zelle nur mit Farbe nur eine Formatierte Zelle ohne Inhalt ist, aber in diesem Falle ist das ein klein wenig anders. Sie hat wohl beispielsweise keinen Text, aber durch die Farbe ist sie als benutzt markiert.
Das heißt also jetzt, das Farbliche Zellen in diesem Falle kein guter und verlässlicher Anhaltspunkt sind um einen bestimmten Bereich auszuwerten. Da muss eine andere Methode, ein anderes System her. Doch welches System geeignet wäre, ist schwer zu sagen.
Am "einfachsten" wäre es, wenn in einer benachbarten Spalte für jede ausgefüllte Zeile im Bereich B bis K irgendetwas drin steht, beispielsweise ein *. Und die Zeile mit dem letzten * wäre die zu löschende Zeile im genannten Bereich. Und beim eigentlichem löschen wird auch der dementsprechende * mitgelöscht. Siehe angehängtes Beispiel.
Die jetzige Beispieldatei soll nur das Grundlegende Prinzip darstellen, Optimierung und sonstiges ist nicht enthalten. Wäre das für dich eine alternative?
Gruß
balu