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