[GELÖST] Letzte gefüllte Zelle einer Spalte, nicht der Tab?

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: [GELÖST] Letzte gefüllte Zelle einer Spalte, nicht der Tab?

Re: [GELÖST] Letzte gefüllte Zelle einer Spalte, nicht der T

von balu » Mo, 02.01.2012 14:38

Hallo Stephan,

deine Beispiele sind klasse! Danke schön! Werd ich mir gut aufheben :).


Gruß
balu

Re: Letzte gefüllte Zelle einer Spalte, nicht der Tabelle?

von Entchen19 » Mo, 02.01.2012 14:02

Stephan,

genau das habe ich gesucht, so klappt es prima :-)
Vielen Dank !!!

Code: Alles auswählen

x = oSheet.Columns(5).queryEmptyCells() 'Spalte F
	 iSchluss3 = x(x.Count - 1).RangeAddress.StartRow + 1
Jetzt kann ich endlich weitermachen und hoffe, die Diagramme per Basic zeichnen zu lassen ist nicht so kompliziert wie bei Excel :shock:

LG
Entchen

Re: Letzte gefüllte Zelle einer Spalte, nicht der Tabelle?

von Stephan » Mo, 02.01.2012 12:59

Was ich aber haben möchte, ist die letzte mit Werten gefüllte Zelle NUR DIESER SPALTE?!?!
z.B. nutze die Methode .queryEmptyCells (http://www.openoffice.org/api/docs/comm ... EmptyCells):

Code: Alles auswählen

Sub Main
  With ThisComponent.Sheets().getByIndex(0)
    x = .Columns(5).queryEmptyCells() 'Spalte F
    Msgbox x(x.Count-1).RangeAddress.StartRow - 1
  End With
End Sub
oder, wenn es wirklich nur um Werte ginge .queryContentCells:

Code: Alles auswählen

Sub Main
  With ThisComponent.Sheets().getByIndex(0)
    x = .Columns(5).queryContentCells(1)
    Msgbox x(x.Count-1).RangeAddress.EndRow
  End With
End Sub


Gruß
Stephan

Re: Letzte gefüllte Zelle einer Spalte, nicht der Tabelle?

von Entchen19 » Mo, 02.01.2012 11:36

Hallo Balu,

das beruhigt mich ja schon einmal, dass nicht nur ich da Probleme mit habe ;-)

Bevor ich die letzte gefüllte Zelle der Spalte F herausfinden möchte, bestücke ich die Spalten G1 - variable Spalte mit Werten.
Davor ziehe ich mir die letzte gefüllte Zelle eines anderen Arbeitsblattes in einen zweiten Cursor und davor führe ich den erwähnten Spezialfilter aus von Spalte A in Spalte F ohne Duplikate.

Müsste ich nach deinen Infos den Cursor erst auf die Spalte irgendwie bewegen und dann das Ende erfragen?

Mit dem Beispielcode holt er mir die EndeZelle und Spalte aus dem ersten Arbeitsblatt der ganzen Datei, dadrin bewege ich mich aber gerade gar nicht ...

Wenn ich es dann mit getcursorbyrange wieder auf meine Bedürfnisse matche, dann geht er zwar auf die Spalte F1, rutscht dann aber bei gotoend auf die letzte gefüllte Spalte rüber und schaut da nach, aber das will ich ja nicht, ich willl ja von der expliziten Spalte die Werte habe ...

Das muss doch auch ohne den Dispatcher gehen ...

LG
Entchen, die da etwas ratlos vorsteht ...

Re: Letzte gefüllte Zelle einer Spalte, nicht der Tabelle?

von balu » Mo, 02.01.2012 01:46

Hallo Entchen,

eins vorweg, mit dem herausfinden der letzten benutzten Zelle innerhalb eines Bereiches tu ich mich selber schwer. Ich versteh da auch noch so einiges nicht.
es scheint, das Calc hier irgendwie die verworfenen Zellen immer noch als gefüllt ansieht oder irgendwie so, dass er mir dann quasi nicht mehr 40 Zellen als gefüllt ansieht, sondern noch 300 oder so.
Welches ist denn die letzte benutzte Spalte, ist es die F?
Denn wenn F nicht die letzte Spalte ist, sondern z.B. K, dann wird nämlich von K die letzte Zelle zurückgegeben. Es spielt nämlich dabei keine Rolle ob Du bei getCellRangeByName F1 oder B1 angibst, es wird die letzte Spalte ausgewertet. (bezogen auf den 2. code)

Wie Du das Problem jetzt aber lösen kannst, weiß ich auch noch nicht.
Was für Koordinaten bekomnmst Du den mit dem Beispielcode von Dannenhöfer angezeigt?
http://www.dannenhoefer.de/faqstarbasic ... l#Zweig214



Gruß
balu

[GELÖST] Letzte gefüllte Zelle einer Spalte, nicht der Tab?

von Entchen19 » So, 01.01.2012 23:06

Hallo zusammen,

ich weiß, dass diese Frage schon hundert mal gestellt worden ist, aber ich habe trotzdem die Lösung für mein spezifisches Problem nicht gefunden, daher erneut.

Der folgende Code ermittelt mir die letzte gefüllte Zelle in einem Arbeitsblatt bzw. die erste leere durch das +1

Code: Alles auswählen

oRange = oSheet.getCellRangeByName("F1")
	    oCursor = oSheet.createCursorByRange(oRange)
	    oCursor.gotoEnd
	    oAddress = oCursor.RangeAddress
            iSchluss3 = oAddress.endRow + 1
Was ich aber haben möchte, ist die letzte mit Werten gefüllte Zelle NUR DIESER SPALTE?!?!
Der Code scheint den Bereich, also die Spalte F1 komplett zu ignorieren und sucht stur über das gesamte Arbeitsblatt, was ich gerade nicht möchte :evil:

Ich habe es schon so probiert, aber auch kein Erfolg:

Code: Alles auswählen

oRange = oSheet.getCellRangeByName("F1")
	    oCursor = oSheet.createCursorByRange(oRange)
	    oCursor.gotoEndofUsedArea(true)
	    oAddress = oCursor.RangeAddress
            iSchluss3 = oAddress.endRow + 1

Wo ist mein Denkfehler?

Bin für Tipps dankbar.

EDIT: Ok, ich habe jetzt herausgefunden, dass der Code doch funktioniert, es muss also an den Daten liegen bzw. denkt Calc, dass die Zellen noch irgendwie ... genutzt werden?
In die Spalte wird vorher etwas per Spezialfilter kopiert aus einer anderen Spalte, dabei die Duplikate verworfen, es scheint, das Calc hier irgendwie die verworfenen Zellen immer noch als gefüllt ansieht oder irgendwie so, dass er mir dann quasi nicht mehr 40 Zellen als gefüllt ansieht, sondern noch 300 oder so.

Wie bekomme ich das denn hin, also ich müsste quasi nur auf Vorhandensein eines Inhaltes abfragen, denn die Zellen sind definitiv leer.

LG
Entchen

Nach oben