Vielleicht noch folgende Hinweise:
-der Textvergleich mit "kein Konto" wird nur funktionieren, wenn in der Tabelle auch "kein Konto" genau so drin steht. Wenn Du mit der Groß- und Kleinschreibung variierst, funktioniert der Vergleich nicht. Wenn also in der Zelle "Kein konto" drin steht, wird er nicht löschen! Wenn Du das auch löschen willst, dann solltest Du das ganze z.B. so lösen:
If lcase(WS.Cells(i, "A").Text) = "kein konto" Then WS.Rows(i).Delete
-With bringt nur Vorteile, wenn man das Objekt häufiger benötigt. Wenn es nur einmal verwendet wird, kann man es getrost weglassen, das macht den Code übersichtlicher
-Zeilen mit (fast) identischem Code kann man oft in einer Schleife abhandeln und muss nicht zwingend die Zeilen 25 mal wiederholen
-Die Referenzierung ist wichtig. Wenn Du die Referenzierung weglässt, z. B. bei Rows("30").Delete, dann bezieht sich Rows auf das aktive Arbeitsblatt. Falls das Blatt WS nicht das aktive ist, löscht er nicht, wie gewollt in WS, sondern im aktiven Arbeitsblatt. Es ist also wichtig darauf zu achten.
-Range.Text gibt den tatsächlich in der Zelle angezeigten Wert an (mit allen Formatierungen). Das ist bei Textinhalten in der Regel nicht problematisch. Aber wenn Du in der Zelle eine 10 stehen hast und die ist mit "0,00" formatiert, gibt .Text den Wert "10,00" zurück. Wenn du jetzt .Text = "10" schreibst wird das nicht übereinstimmen. Hier verwendet man ggf. besser Range.Value. Das gibt den reinen Inhalt der Zelle ohne Formatierungen zurück
|