VisualBasic Zellen mit Anfangsbuchstaben filtern und löschen

doppelpunkthexe

Cadet 1st Year
Registriert
Nov. 2012
Beiträge
12
Hallo
Ich würde gerne mit Excel Makro meine Tabelle in Spalte A von Anfang bis zum Ende nach Einträgen durchsuchen, die mit einem "G" beginnen und jedes Ergebnis als Zeile löschen.

Mein Ansatz bisher:

Code:
dim rngZelle As Range
For Each rngZelle In Range("A:A")
If Left(rngZelle.Value, 1) = "G" Then
Rows(rngZelle).Select

MsgBox "Gefunden in " & rngZelle.Value
Selection.Delete Shift:=xlUp
End If
Next

Nun wird aber an den völlig falschen Ecken gelöscht.
Hilft mir jemand weiter?
 
Fehler gefunden ;)

in Zeile 4 mußt du rngZelle.ROW schreiben, damit er weiß, dass er auf das Attribut Row zugreifen soll.
Ansonsten will er Reihe(G) makieren, was natürlich nicht funktioniert.

Code:
dim rngZelle As Range
For Each rngZelle In Range("A:A")
If Left(rngZelle.Value, 1) = "G" Then
Rows(rngZelle.ROW).Select
 
MsgBox "Gefunden in " & rngZelle.Value
Selection.Delete Shift:=xlUp
End If
Next
 
Vielen Dank, es funktioniert. :)
Er überspringt komischerweise eines der Ergebnisse mit G am Anfang, kannst Du dir erklären woran das liegen könnte?
 
vermutlich steht in der Zelle dann nicht "G", sondern "[Leerzeichen]G" oder Ähnliches.

Ist das möglich?
 
Oder es gibt 2 Zeilen, wo hintereinander ein "G" steht.
Erste Zeile wird gelöscht, nach springt sozusagen die Zeile darunter hoch.
Aber er geht dann in die nächste Zeile und überspringt diese.
 
Evtl. ist auch ein kleines g am Anfang? Falls ja, und du willst sowohl große als auch kleine Gs erwischen, dann prüfe am besten mit If UCase(Left(rngZelle.Value, 1)) = "G" Then. Außerdem werden alle Zellen übersprungen, wenn du die Zeile davor löscht, da du in deiner Schleife in jedem Durchgang zur nächsten Zeile gehts. Löscht du also eine Zeile, dann wird die nächste Zeile nach dem Löschen zur aktuellen Zeile und wird nicht nochmal überprüft.

Außerdem würde ich überdenken, die gesamte Spalte A zu durchlaufen In Range("A:A"). Das können je nach Excelversion über 1 Mio. Zeilen sein.

Außerdem sind 99,9 % aller Selects in Makros unnötig - sofern du das nicht unbedingt brauchst, solltest du das anders lösen.
 
Zurück
Oben