Ich erstelle ein schnelles Sub, um eine Gültigkeitsprüfung für E-Mails durchzuführen. Ich möchte ganze Zeilen von Kontaktdaten löschen, die kein '@' in der Spalte 'E' enthalten. Ich habe das folgende Makro verwendet, aber es funktioniert zu langsam, weil Excel alle Zeilen nach dem Löschen bewegt.
Ich habe versucht, eine andere Technik wie diese: set rng = union(rng,c.EntireRow)
, und danach löschen den gesamten Bereich, aber ich konnte nicht verhindern, Fehlermeldungen.
Ich habe auch damit experimentiert, jede Zeile zu einer Auswahl hinzuzufügen und nachdem alles ausgewählt wurde (wie in Strg + Auswahl) und anschließend gelöscht wurde, aber ich konnte die entsprechende Syntax dafür nicht finden.
Irgendwelche Ideen?
%Vor%Sie brauchen dazu keine Schleife. Ein Autofilter ist viel effizienter. (ähnlich der Cursor-WHERE-Klausel in SQL)
Autofilter alle Zeilen, die nicht "@" enthalten und löschen Sie sie dann wie folgt:
%Vor%HINWEISE:
.Offset(1,0)
verhindert das Löschen der Titelzeile .SpecialCells(xlCellTypeVisible)
gibt die Zeilen an, die verbleiben, nachdem der Autofilter angewendet wurde .EntireRow.Delete
löscht alle sichtbaren Zeilen mit Ausnahme der Titelzeile Durchlaufen Sie den Code und Sie können sehen, was jede Zeile macht. Verwenden Sie F8 im VBA-Editor.
Unter Verwendung eines Beispiels, das vom Benutzer shahkalpesh bereitgestellt wurde, habe ich das folgende Makro erfolgreich erstellt. Ich bin immer noch neugierig auf andere Techniken (wie die von Fnostro, in denen Sie Inhalt löschen, sortieren und löschen). Ich bin neu in VBA, also wären alle Beispiele sehr hilfreich.
%Vor%Wenn Sie mit vielen Zeilen und vielen Bedingungen arbeiten, sollten Sie diese Zeilenlöschmethode besser verwenden
%Vor%