Hallo, ecito!
Gibts da auch die möglichkeit nur bestimmte Zeilen zu löschen?
Selbstverfreilich. Statt dem .Cells.Clear rennst Du über alle Zeilen (ggf. bis zu einer Leerzeile oder einer bestimmten, maximalen Anzahl von Leerezeilen) und löschst nach bestimmten Bedingungen. Also z. B. so:
Dim lngZeile as long
Dim lngLeerzeile as Long
...
' statt wsSheet.Cells.Clear:
lngZeile=1
do
' ich gehe mal davon aus, dass in Spalte A was steht,
' um zu überprüfen, ob es eine Leerzeile ist:
if Trim(wsSheet.Cells(lngZeile,1))="" Then
lngLeerzeile=lngLeerzeile+1
else
lngLeerzeile=0
' Jetzt gehe ich davon aus, dass in Spalte B und C das Kriterium
' zu finden ist (ruhig etwas komplexer), dass über das Löschen
' entscheidet: Beispiel hier: Spalte B und Spalte C enthalten
' Zahlen; beide müssen ungleich 0 sein, sonst wird gelöscht!
if wsSheet.Cells(lngZeile,2)\*wsSheet.Cells(lngZeile,3)=0 then
wsSheet.Rows(lngZeile).Delete
' weil die nächste Zeile auch überprüft werden soll, die
' nach dem Löschen aber eine Zeile hochgerutscht ist, und weil
' die Zeilenvariable am Ende gleich hochgezählt wird:
lngZeile=lngZeile-1
endif
endif
lngZeile=lngZeile+1
loop until lngLeerzeile\>20 ' z. B., wenn definitiv nicht
' mehr als 20 Leerzeilen aufeinander folgen...
' und dann weiter wie gehabt...
Gruß, Manfred