letzte zeile in spalte mit cellflags rangeaddresses queryc..
Verfasst: Do, 11.12.2008 02:26
meine erste Lösung für eine benutzte Spalte:
meine Lösung für mehrere benutzte Spalten:
------------------------------------------------------------------------------------------------------------
hallo forum
ich möchte in meinem code die letzte befüllte zeile einer spalte ermitteln lassen
allerdings fehlen mir dazu - eigentlich wie immer - die werkzeuge
ich habe ausprobiert und mir angesehen, wie es mit dem dispatcher funktioniert, wenn man das als makro aufgenommen hat
aber das betrachte ich als notlösung, weil ich denke, dass es auch anders funktioniert und ich selbstgemacht bevorzuge
wer kann nachhelfen?
Code: Alles auswählen
SPALTEID = 0 ' beliebig
FLAGS = 23 ' 1+2+4+16 siehe openoffice.org/api/docs/common/ref/com/sun/star/sheet/CellFlags.html
ZELLEN = thiscomponent.currentcontroller.getactivesheet.columns( SPALTEID ).querycontentcells( FLAGS )
ANZAHLBEREICHE = ubound( ZELLEN.rangeaddresses )
if ANZAHLBEREICHE > -1 then
ZEILELETZTE = ZELLEN.rangeaddresses( ANZAHLBEREICHE ).endrow
print "ZEILELETZTE: " & cstr( ZEILELETZTE ) & " in SPALTEID " & cstr( SPALTEID ) & " mit FLAGS: " & cstr( FLAGS ) & " ! "
else
print "keine FLAGS-" & cstr( FLAGS ) & "-zellen in SPALTEID " & cstr( SPALTEID ) & " ! "
endif
Code: Alles auswählen
FLAGS = 0023 ' 1+2+4+16 siehe openoffice.org/api/docs/common/ref/com/sun/star/sheet/CellFlags.html
ZELLEN = thiscomponent.currentcontroller.getactivesheet.querycontentcells( FLAGS )
ANZAHLBEREICHADRESSEN = ubound( ZELLEN.rangeaddresses )
if ANZAHLBEREICHADRESSEN > -1 then
for BEREICHADRESSEJETZT = 0 to ANZAHLBEREICHADRESSEN
if ZELLEN.rangeaddresses( BEREICHADRESSEJETZT ).endcolumn > SPALTELETZTE then
SPALTELETZTE = ZELLEN.rangeaddresses( BEREICHADRESSEJETZT ).endcolumn
endif
if ZELLEN.rangeaddresses( BEREICHADRESSEJETZT ).endrow > ZEILELETZTE then
ZEILELETZTE = ZELLEN.rangeaddresses( BEREICHADRESSEJETZT ).endrow
endif
next
print "SPALTELETZTE: " & cstr( SPALTELETZTE ) & " und ZEILELETZTE: " & cstr( ZEILELETZTE ) & " mit FLAGS: " & cstr( FLAGS ) & " ! "
else
print "keine FLAGS-" & cstr( FLAGS ) & "-zellen ! "
endif
------------------------------------------------------------------------------------------------------------
hallo forum
ich möchte in meinem code die letzte befüllte zeile einer spalte ermitteln lassen
allerdings fehlen mir dazu - eigentlich wie immer - die werkzeuge
ich habe ausprobiert und mir angesehen, wie es mit dem dispatcher funktioniert, wenn man das als makro aufgenommen hat
Code: Alles auswählen
sub spaltende
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$D$2"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(1) as new com.sun.star.beans.PropertyValue
args2(0).Name = "By"
args2(0).Value = 1
args2(1).Name = "Sel"
args2(1).Value = false
dispatcher.executeDispatch(document, ".uno:GoDownToEndOfData", "", 0, args2())
ZEILE = thiscomponent.currentselection.celladdress.row
print "letzte zeile in spalte d = " & cstr(ZEILE + 1)
end sub
wer kann nachhelfen?