letzte zeile in spalte mit cellflags rangeaddresses queryc..

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Karolus
********
Beiträge: 7534
Registriert: Mo, 02.01.2006 19:48

Re: letzte zeile in spalte ?

Beitrag von Karolus »

Hallo
Welche Zellle/Zeile hättest du den gerne:
Steffn_wecheLetzteZeile.ods
(8.47 KiB) 151-mal heruntergeladen
[ ]rot
[ ]grün
[ ]blau
zutreffendes bitte ankreuzen.
Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
steffn
***
Beiträge: 92
Registriert: So, 16.11.2008 15:02

Re: letzte zeile in spalte ?

Beitrag von steffn »

Die Antwort weiß ich, das ist einfach!
[ ]rot
[XXXX]grün Lieblingsfarbe! :mrgreen:
[ ]blau
oo4.1.2 in winxp pro mit sp3
Karolus
********
Beiträge: 7534
Registriert: Mo, 02.01.2006 19:48

Re: letzte zeile in spalte ?

Beitrag von Karolus »

Hallo
Ok, langsam kommen wir wieder zum Thema:

Code: Alles auswählen

...
ocursor = osheet.createCursorbyRange(osheet.getcellrangebyname("C5"))
ocursor.gotoEnd
'möchtest du jetzt den Index der nächsten freien Zeile unterhalb ?
ifreiZeile = ocursor.getRangeAddress.endRow +1
msgbox "der Index der nächsten freien Zeile ist " & ifreiZeile
....
Nachtrag:
Statt C5 musst du ggf. eine Addresse innerhalb deines geschlossenen Bereich angeben !
Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
steffn
***
Beiträge: 92
Registriert: So, 16.11.2008 15:02

Re: letzte zeile in spalte ?

Beitrag von steffn »

Mit der Zeit fällt einem so einiges ein, was man in den ersten Beitrag so alles hätte reinschreiben können
...

Mittlerweile denke ich, dass es "jeweils letzte Zelle mit formula von verschiedenen Spalten" genauer beschreibt und mir (zumindest jetzt lol) keine missverständlichen Teile mehr auffallen (aber das dachte ich ja auch bei Themaerstellung ...)

Oder anders: Wie kann ich in Basic den gleichen Effekt erzielen, wie wenn man die letzte Zeile in einer Calc-Datei markiert und '.uno:GoUpToStartOfData' im dispatcher ausführt?
oo4.1.2 in winxp pro mit sp3
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: letzte zeile in spalte ?

Beitrag von komma4 »

steffn hat geschrieben:"jeweils letzte Zelle mit formula von verschiedenen Spalten"

Code: Alles auswählen

Sub Main
msgbox " usedRange" 
usedArea
End Sub


REM Danad Posted: Sat Feb 19, 2005 3:19 am
REM http://www.oooforum.org/forum/viewtopic.phtml?t=17142

Function usedArea()
   oDoc = thisComponent
   oPlan = oDoc.getSheets().getByIndex(0)
   oCursor = oPlan.createCursor()
   oCursor.gotoStartOfUsedArea(False)
   oCursor.gotoEndOfUsedArea(True)
   aAdd = oCursor.getRangeAddress()

 '  print aAdd.StartRow; aAdd.StartColumn; aAdd.EndRow; aAdd.EndColumn
usedArea = aAdd.StartRow & " " & aAdd.StartColumn & " " &  aAdd.EndRow & " " &  aAdd.EndColumn
end Function 
usedArea() gibt Dir hier die Indices (!) des Starts und Ende des Tabellenblattes mit Index 0 (i.d.R.: "Tabelle1") zurück.

Hilft Dir das?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
steffn
***
Beiträge: 92
Registriert: So, 16.11.2008 15:02

Re: letzte zeile in spalte ?

Beitrag von steffn »

Nein. Und ehrlich gesagt wundert es mich sehr, dass Ihr mir jeder zweimal den Tipp gebt, die letzte Zeile eines Bereichs zu benutzen, welcher aus mehreren Spalten bestehen kann, obwohl ich der Meinung bin, dass ich mehrmals nach der einer Spalte gefragt habe. Mit 'gotoend' und 'gotoendofusedarea' funktioniert das doch nur mit freiliegenden Spalten oder mit der, die die optisch am weitesten unten benutzte Zelle hat, beides weit entfernt davon, wenn man in einer Spalte unterhalb der benutzten Zellen 'Steuerung' und 'Pfeil-nach-oben' drückt.

Als ich mir meinen Beitrag mit 'Formula' durchgelesen habe, kam ich auf die Idee danach zu suchen. Das führte mich nach einer ganzen Weile zu 'Flags'. Das führte mich wiederum zu 'querycontentcells' und das gibt einem ganz hübsche 'rangeaddresses'.

Code: Alles auswählen

	BLATT = thiscomponent.currentcontroller.getactivesheet
	SPALTE = BLATT.columns(0)
	const FLAGS as long = 31
	ZELLEN = SPALTE.querycontentcells( FLAGS )
	BEREICHE = ubound( ZELLEN.rangeaddresses)
	if BEREICHE > -1 then
		ZEILELETZTE = ZELLEN.rangeaddresses( BEREICHE ).endrow
		print "ZEILELETZTE: " & cstr( ZEILELETZTE ) & " ||| "
	else
		print "keine FLAGS-31-zellen ||| "
	endif
Danke, dass Ihr mir helfen wolltet.
Ich kann aber immer noch nicht verstehen, weswegen derart intensiv meine angebliche Art zu Suchen kritisiert wurde, obwohl dies offensichtlich das erste Auftauchen in diesem Forum war. Ich habe von der sinnlosen Diskussion übrigens derart schlechte Laune bekommen, dass selbst jetzt die Freude über die vielleicht optimale Lösung komischerweise nicht überwiegt. Suchen nach "rangeaddresses" oder "querycontentcells" ergibt jetzt übrigens in allen Unterforen ohne irgendeine Veränderung der Sucheinstellungen in der erweiterten Suche einen Treffer.
oo4.1.2 in winxp pro mit sp3
Antworten