Ich möchte in einem Tabellenblatt die Spalte C durchsuchen, wenn in einer der Zellen ein bestimmter Text oder Buchstabe vorkommt sollte die Zeile ausgeblendet werden. Dieser bestimmte Text oder Buchstabe steht in eine anderen Tabelle B39:B53 dieser Bereich hat einen Bereichsnamen "abzüglich".
Mein Versuch blendet nur den ersten Fund aus? [ Bild bitte so als Datei hochladen: Klick mich! ]
Vielleicht kann mir jemand helfen Ich danke schon mal im Voraus
Sub prcX() Dim d As Range Dim rngTreffer As Range Dim strTreffer As String
For Each d In Range("abzüglich") With Workheets("aktuell").Range("C7:C120") Set rngTreffer = .Find(d.Value, LookIn:=xlValues, lookat:=xlWhole) If rngTreffer Is Nothing Then strTreffer = rngTreffer.Address Do .Rows(rngTreffer.Row).Hidden = True Set rngTreffer = .FindNext(rngTreffer) Loop While strTreffer <> rngTreffer.Address End If ' If WorksheetFunction.Count(.Cells, d.Value) Then ' .Cells(WorksheetFunction.Match(d.Value, .Cells, 1), 1).Offset.EntireRow.Hidden = True ' End If End With Next d End Sub
Könntest Du zur Darstellung deines Codes den Code-Tag benutzen? (5. Symbol von rechts im Antwortfenster)
Hallo Stefan Danke für die schnelle Anwort. Es erscheint volgende Fehlermeldung in der Zeile
Code:
"strTreffer = rngTreffer.Address" Laufzeitfehler ´91: Objektvariable oder With-Blockvariable nivht festgelegt
Code:
Dim d As Range Dim rngTreffer As Range Dim strTreffer As String
For Each d In Range("abzüglich") With Worksheets("Aktuell").Range("C7:C120") Set rngTreffer = .Find(d.Value, LookIn:=xlValues, lookat:=xlWhole) If rngTreffer Is Nothing Then strTreffer = rngTreffer.Address Do .Rows(rngTreffer.Row).Hidden = True Set rngTreffer = .FindNext(rngTreffer) Loop While strTreffer <> rngTreffer.Address End If ' If WorksheetFunction.Count(.Cells, d.Value) Then ' .Cells(WorksheetFunction.Match(d.Value, .Cells, 1), 1).Offset.EntireRow.Hidden = True ' End If End With Next d
Jetzt läuft das Skript fehlerfrei durch, es bearbeitet auch die Zeile ".Rows(rngTreffer.Row).Hidden = True" aber nicht so oft wie es eigentlich müsste. Im endefekt bassiert nichts (er wird keine Zeile ausgeblendet).
die Beispieldatei hat genügt. Da hatte ich schon noch ein paar Fehler drin :@
Code:
Sub ausblenden()
Dim d As Range Dim rngTreffer As Range
For Each d In Range("abzüglich") With Worksheets("Aktuell").Range("C10:C30") Set rngTreffer = .Find(d.Value, LookIn:=xlValues, lookat:=xlWhole) If Not rngTreffer Is Nothing Then Do .Rows(rngTreffer.Row - .Row + 1).Hidden = True Set rngTreffer = .FindNext(rngTreffer) Loop While Not rngTreffer Is Nothing End If End With Next d