Seite 1 von 1

Letzte Zeile einer Tabelle suchen und löschen

Verfasst: So, 02.08.2009 20:41
von clumsy
Hallo,

wie kann ich die letzte Zeile einer Tabelle bestehend aus 5 Spalten suchen
(Also gesucht ist die Zeile auf die nur noch leere Zeilen folgen)
und deren Inhalt löschen?

Das müsste man irgendwie in eine Schleife packen, die die letzte Zeile findet:

Code: Alles auswählen

Sub clearContents
   Dim oRange as Object
   Dim oSheet as Object
   oSheet = thisComponent.Sheets(0)
   oRange = oSheet.getCellRangeByPosition(3, position, 7, position)
   oRange.clearContents(com.sun.star.sheet.CellFlags.VALUE)
End Sub 

Re: Letzte Zeile einer Tabelle suchen und löschen

Verfasst: So, 02.08.2009 21:49
von clumsy
ok, verstehe.

Das Problem ist jetzt bloß, dass er die ganze Zeile absucht und nicht (so wie ich es brauche) in dem Zellbereich (3,end_row,7,end_row)
Ist nämlich in anderen Spalten tiefer ein Eintrag, so löscht er nicht mehr die letzte Zeile des Zellbereichs

Re: Letzte Zeile einer Tabelle suchen und löschen

Verfasst: So, 02.08.2009 22:06
von Karolus
Hallo
Dann ersetze in Gast#s Code die zweite Zeile:
...
oCellCursor = oSheet.createCursor()
...
durch:
...
oRange = osheet.getcellrangebyname("I2")
oCellCursor = oSheet.createCursorByRange(oRange)

Gruß Karo
...

Re: Letzte Zeile einer Tabelle suchen und löschen

Verfasst: So, 02.08.2009 22:15
von clumsy
ok, dann habe ich:

Code: Alles auswählen

Sub Main
   oSheet = ThisComponent.Sheets(0)
   oRange = oSheet.getCellRangeByName("I2")
   oCellCursor = oSheet.createCursorByRange(oRange)
   oCellCursor.GotoEndOfUsedArea(True) 'gehe zur letzten benutzten Zeile   
   End_Row = oCellCursor.getRangeAddress.EndRow 'Index letzte Zeile auslesen
   oRange = oSheet.getCellRangeByPosition(3, End_Row, 7, End_Row)
   oRange.clearContents(com.sun.star.sheet.CellFlags.VALUE)
End Sub
Wenn meine Tabelle jetzt von D1:H20 geht und ich habe in A21 eine Zahl stehen, dann löscht er mir nicht mehr die letzte Zeile der Tabelle (nämlich D20:H20), weil er unter A21 die letzte Zelle gefunden hat. Das will ich halt vermeiden.

Wenn ich das so abändere geht es immer noch nicht

Re: Letzte Zeile einer Tabelle suchen und löschen

Verfasst: So, 02.08.2009 22:20
von clumsy
danke, so geht es! Super!!! :D

Und was muss ich abändern, wenn das Makro bei Zeile 3 aufhören soll zu löschen?
Also die ersten 3 Zeilen von oben sollen immer stehen bleiben


edit:

für:

Code: Alles auswählen

for i = 0 to End_Row +1 'Schleife bis zur letzten benutzten Zeile +1
das ersetzen:

Code: Alles auswählen

for i = 4 to End_Row +1 'Schleife bis zur letzten benutzten Zeile +1
bin ich selbst drauf gekommen...

danke!

Re: Letzte Zeile einer Tabelle suchen und löschen

Verfasst: So, 02.08.2009 22:38
von clumsy
Und wenn ich jetzt den Inhalt von 5 Zellen in die 5 Zellen der nächste freie Zeile dieser Tabelle von Spalte D bis H kopieren möchte?
Das muss doch ähnlich funktionieren.

Also zum Beispiel steht in Zelle B1 "10", in Zelle B2 "33", in Zelle C3 "23", in Zelle A4 "456" und in Zelle J5 "98".

Diese Werte sollen dann in die nächste freie Zeile (von oben gesehen) in die Tabelle geschrieben werden:

Also zum Beispiel B1 nach D10, B2 nach E10, C3 nach F10, A4 nach G10 und J5 nach H10.