Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA schreiben - Zeile nach Wert durchsuchen und dann löschen und nachrücken
#1
Sad 
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


Angehängte Dateien
.xlsx   TestMappe.xlsx (Größe: 9,84 KB / Downloads: 4)
Antworten Top
#2
Hallo,

verbundene Zellen sind schon mal Murks. Wenn du nach Report suchst, sollte da auch Report stehen und nicht Reportfilter oder ähnliches.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antworten Top
#3
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
Antworten Top
#4
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
Antworten Top
#5
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!
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste