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:
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
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
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.
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.