Letzte Zeile einer Tabelle suchen und löschen

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

Moderator: Moderatoren

clumsy
**
Beiträge: 24
Registriert: So, 02.08.2009 15:17

Letzte Zeile einer Tabelle suchen und löschen

Beitrag 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 
clumsy
**
Beiträge: 24
Registriert: So, 02.08.2009 15:17

Re: Letzte Zeile einer Tabelle suchen und löschen

Beitrag 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
Karolus
********
Beiträge: 7535
Registriert: Mo, 02.01.2006 19:48

Re: Letzte Zeile einer Tabelle suchen und löschen

Beitrag 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
...
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
clumsy
**
Beiträge: 24
Registriert: So, 02.08.2009 15:17

Re: Letzte Zeile einer Tabelle suchen und löschen

Beitrag 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
clumsy
**
Beiträge: 24
Registriert: So, 02.08.2009 15:17

Re: Letzte Zeile einer Tabelle suchen und löschen

Beitrag 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!
clumsy
**
Beiträge: 24
Registriert: So, 02.08.2009 15:17

Re: Letzte Zeile einer Tabelle suchen und löschen

Beitrag 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.
Antworten