Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1608to1612
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Suchen nach Zellen / Filter setzen

Suchen nach Zellen / Filter setzen
26.02.2018 09:57:33
Barbara
Hallo Leute,
ich habe eine Tabelle, in der stehen viele Termin untereinander. ICh setze mit folgendem Code einen Filter auf dem Arbeitsblatt, um alle alten Termine auszublenden.
Private Sub Worksheet_Activate()
'Filter setzen
Dim Datum As Date
Datum = Format(Now(), "DD.MM.YYYY")
Rows("3:3").AutoFilter Field:=1, Criteria1:=">" & CDbl(Datum)
End Sub

Mit folgeendem Code suche ich auf dem zweiten Arbeitsblatt nach der Zeile, die ich löschen will. "h" ist dabei die Koordinate und variable, die jeder zeile mitgegeben wurde.
Private Sub Worksheet_Change(ByVal target As Range)
if target.value = "D" Then
If MsgBox("Soll dder Termin gelöscht werden?", vbYesNo, "Hinweis") = vbYes Then
'Eintrag "Ja"
Dim RaFound As Range
Set RaFound = Tabelle1.Cells.Find(h, , , xlWhole, xlByRows, xlNext)
If Not RaFound2 Is Nothing Then Tabelle1.Rows(RaFound2.Row).Delete
MsgBox ("Termin wurde gelöscht!")
Set RaFound2 = Nothing
Else
'Eintrag "Nein"
target.Value = ""
End If
End Sub

Wenn ich jetzt den Autolfilter setze, dann findet er meine Zeile nicht mehr. Ohne Autofilter (erster Code) funktioniert alles einwandfrei. Woran kann das liegen?

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
RaFound <> RaFound2!!! owT
26.02.2018 12:35:21
Rudi
AW: RaFound <> RaFound2!!! owT
26.02.2018 12:47:11
Barbara
Ja du hast recht - das war aber leider nur ein Schreibfehler. Problem besteht auch mit richtiggestellten Code weiter...
Private Sub Worksheet_Change(ByVal target As Range)
if target.value = "D" Then
If MsgBox("Soll dder Termin gelöscht werden?", vbYesNo, "Hinweis") = vbYes Then
'Eintrag "Ja"
Dim RaFound As Range
Set RaFound = Tabelle1.Cells.Find(h, , , xlWhole, xlByRows, xlNext)
If Not RaFound Is Nothing Then Tabelle1.Rows(RaFound.Row).Delete
MsgBox ("Termin wurde gelöscht!")
Set RaFound = Nothing
Else
'Eintrag "Nein"
target.Value = ""
End If
End Sub

Anzeige
AW: RaFound <> RaFound2!!! owT
26.02.2018 13:35:52
Barbara
Vielleicht hat einer eine Idee - derzeit habe ich es mit Umwegen gelöst, indem ich beim deaktivieren des blattes den Filter wieder zurück setze ...
AW: RaFound <> RaFound2!!! owT
26.02.2018 15:41:16
Daniel
Hi
die .FIND-Funktion sucht nur im sichtbaren Bereich der Zelle und ignoriert die ausgeblendeten Zeilen.
Wenn der Autofilter aktiv bleiben soll, müsstest du mit einer Schleife über alle relevanten Zellen laufen, diese auf ihren Inhalt überprüfen und dann die Zeile löschen:
for each RaFound in Tabelle1.Usedrange
if RaFound.Value  = h Then RaFound.EntireRow.delete
Next
Gruß Daniel
AW: RaFound <> RaFound2!!! owT
26.02.2018 19:40:19
Barbara
Ah na das klingt logisch... ich muss aber noch blöd fragen, wo muss ich den Code einfügen ? Wie muss mein "SuchCode" dann aussehen ?
Anzeige
AW: RaFound <> RaFound2!!! owT
27.02.2018 15:15:08
Barbara
Wie muss ich das einbauen ? Kann mir denn niemand einen Rat geben?
AW: RaFound <> RaFound2!!! owT
27.02.2018 18:33:25
Daniel
anstelle von dem hier:
Set RaFound = Tabelle1.Cells.Find(h, , , xlWhole, xlByRows, xlNext)
If Not RaFound Is Nothing Then Tabelle1.Rows(RaFound.Row).Delete
MsgBox ("Termin wurde gelöscht!")
Set RaFound = Nothing
Gruß Daniel

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige