Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1852to1856
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

.EntireRow.Delete funktioniert nicht

.EntireRow.Delete funktioniert nicht
04.11.2021 17:36:45
Basti
Hallo Zusammen,
wisst Ihr, wieso die entsprechenden Zellen mit "EntireRow.Delete" nicht gelöscht werden?
Dim last As Integer
For last = 2 To fill
If Worksheets("Tab1").Range("B2:B800").Find(Worksheets("Tab2").Cells(last, 2)) Is Nothing Then
Worksheets("Tab2").Rows(last).EntireRow.Delete
last = last - 1
End If
Next
Danke und viele Grüße
Basti

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: .EntireRow.Delete funktioniert nicht
04.11.2021 17:57:47
UweD
Hallo
Welchen Wert hat fill am Anfang?
Wenn nicht festgelegt oder kleiner als 2 dann ist die Schleife direkt zu Ende
LG UweD
AW: .EntireRow.Delete funktioniert nicht
04.11.2021 18:03:57
Basti
Hallo Uwe,
danke für deine Rückmeldung.
fill geht bis Ende (400) - habe es gerade mit msgbox mir anzeigen lassen. Funktioniert also
Viele Grüße
Basti
AW: .EntireRow.Delete funktioniert nicht
04.11.2021 18:02:11
Daniel
HI
der Ausdruck "Worksheets("Tab1").Range("B2:B800").Find(Worksheets("Tab2").Cells(last, 2))" ergibt, wenn der Suchbegriff nicht gefunden wird, nicht NOTHING, sondern den VariablenTyp 0 = EMPTY. (leer)
das NOTHING ist Objektvariablen zugordnet, die kein Objekt zugewiesen bekommen haben. Das entsteht, wenn man das Ergebenis von .FIND zunächst einer Rangevariablen zusweist und dann diese Objektvariable prüft:

Set rngX = ...Find(...)
if rngX is nothing then
prüft man jedoch das .FIND-Ergebnis direkt, so muss man auf IsEmpty prüfen, weil das Ergebnis direkt nicht "nichts", sondern "leer" ist:

If IsEmpty(Worksheets("Tab1").Range("B2:B800").Find(Worksheets("Tab2").Cells(last, 2))) Then
noch ein Tip: lass Löschschleifen immer Rückwärts laufen, dann hast du das Problem mit den sich verschiebenden Enden nicht.
Theortisch müsstest du ja nicht nur den Schleifenzähler um 1 zurücksetzen, sondern auch den Schleifenendwert, was aber nicht möglich ist und so läuft die Schleife am Ende dann über die entsprechende Anzahl an nachgerückten Zellen.

For last = fill to 2 step -1
das last = last -1 kann dann entfallen.
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige