Hallo
Das ist ein gutes Beispiel
wie man es nicht machen sollte
Zuerst definierst du das Tabellenblatt fix über den Index.
Dann
blendest du zunächst nur die Zeilen aus für die deine Bedingung zutrifft
Jetzt beginnst du nochmal von vorne mit neuen Variablenzuweisungen ( völlig sinnfrei )
im Falle von ...
ActiveSheet wechselst du uU. sogar das Tabellenblatt !!! ( →evtl. Datenverlust )
um danach nochmal über die Bedingung 'not Row.isvisible' die
Zeilen tatsächlich zu löschen.
umständlicher gehts nicht
Überarbeitet:
Code: Alles auswählen
Sub LOESCHEN
Dok = ThisComponent
sheet = Dok.CurrentSelection.Spreadsheet
startrow = 20
refstring = sheet.getCellByPosition(3,0).String 'inhalt aus D1
Cursor = sheet.createCursor()
Cursor.goToEndOfUsedArea(false)
endrow = Cursor.getRangeAddress().Endrow
if startrow >= endrow then exit sub 'Vermeidung einer Endlosschleife
For rowindex = endrow to startrow step -1 'rückwärts iterieren
If sheet.getCellByPosition(0, rowindex ).String = refstring then
sheet.rows.removeByIndex( rowindex, 1)
endif
next
msgbox ("Offerte - " & refString & " - wurde gelöscht")
end sub
Edit: Bernd war schneller