Clever-Excel-Forum

Normale Version: VBA schreiben - Zeile nach Wert durchsuchen und dann löschen und nachrücken
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo!

Ich bin mittlerweile am verzweifeln, da ich gefühlt 15 Wege ausprobiert habe & nichts funktioniert bzw. zum Ziel führt.

Folgende Problemstellung:

Tabelle mit Erhebungswerten, aus der einige Zeilen gelöscht werden sollen. 
Dies soll per geschriebenem VBA Makro geschehen, da ein aufgezeichnetes mit den immer mal wieder veränderten Abständen und mehr/weniger Zeilen etc. nicht klarkommt.

Demnach soll die Tabelle nach bspw. REPORTFILTER durchsucht werden (nur in Spalte A) & die gesamte Zeile daraufhin gelöscht werden.
Bestenfalls wird REPORTFILTER (119) ebenfalls erkannt und gelöscht. (Aufbau siehe Attachment)

Versucht habe ich es bisher beispielsweise mit:

Sub DeleteReportfilter ()
     Dim rng As Range, i As Integer
     Set rng = ("A1:A100")
     For i = rng.Rows.Count To 1 Step -1
        If rng.Cells (i) .Value = "REPORT" Then rng.Cells(i) .EntireRow.Delete
     Next
End Sub

Fragen: Wieso nimmt es das nicht an? Würde es hierbei theoretisch bei REPORT auch REPORTFILTER* erkennen? (auch schon mit REPORTFILTER eingesetzt versucht, klappte auch nicht)
Habt ihr bessere/ schönere herangehensweisen?

Hilfsspalte mit ZählenWenn etc. habe ich auch schon ausprobiert.

Sorry falls es hierzu schon Threads gibt, habe mich durchgeschaut und einiges ausprobiert, aber nichts davon funktioniert.

Vielen Dank euch schon mal & genießt das Wetter!
Michi
Hallo,

verbundene Zellen sind schon mal Murks. Wenn du nach Report suchst, sollte da auch Report stehen und nicht Reportfilter oder ähnliches.
Hallo HadeLaan,

versuche es mal damit, - hat bei mir funktioniert:

Code:
Sub DeleteReportfilter()

Dim lz As Long
Dim lzletzte As Long

With Tabelle1
lzletzte = 20
For lz = lzletzte To 1 Step -1
If .Cells(lz, 1).Value Like "*Report*" Then
.Rows(lz).EntireRow.Delete
lngZz = lngZz + 1
End If
Next lz
End With
MsgBox lngZz & " Zeilen mit dem Begriff -Report- wurden gelöscht"
End Sub

Musst Du halt noch anpassen an Deine Tabelle und an die Anzahl Zeilen (im Beispiel bis Zeile 20), oder bis zum Ende der benutzten Zeilen zählen lassen. 

Grüße

Norbert
Hallo Klaus-Dieter, 

ich kann's leider nicht ändern - so wird das ganze ausgespuckt. 
Wenn es so leicht zu ändern wäre, würde ich an der Quelle ansetzen und mir diesen "Reportfilter" gar nicht erst mit ausgeben lassen.
Aber so ist es eben.

Hallo NobX,

vielen Dank dir!
Leider klappt's nicht. 
Keine Zeilen werden gelöscht.

Viele Grüße,
HadeLaaan
Hallo!

Ich habe mittlerweile etwas gefunden, womit es läuft.
Dies zieht auch bei "Reportfilter", "Reportfilter_123", xyz.


_______________________________________________________
Sub Reportfilter_Löschen()
Dim rng As Range
    Dim pos As Integer
    Set rng = ActiveSheet.UsedRange
   
    For i = rng.Cells.Count To 1 Step -1
        pos = InStr(LCase(rng.Item(i).Value), LCase("Reportfilter"))
        If pos > 0 Then
            rng.Item(i).EntireRow.Delete
        End If
    Next i
End Sub

________________________________________________________


VG!