Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema InputBox
BildScreenshot zu InputBox InputBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

VBA: Filter zeigt falsches Ergebnis


Betrifft: VBA: Filter zeigt falsches Ergebnis von: Dieter(Drummer)
Geschrieben am: 12.09.2017 16:12:32

Guten Tag,Spezialisten,

mit dem folgenden Coder von Bernd, dem ich nochmal dafür danke, den ich mit Suchbegriff auf A2 geändert habe, wird nicht richtig gefiltert. Es wird lediglich die die letzte belegte Zeile +1 gefiltert.
Ich habe sicher falsche Filternagben im Code und bitte um Berichtigung.
Es soll in Spalte B nach dem Suchbegriff aus Tabelle1, A2, gesucht werden und alle Zeilen mit dem Suchbegriff sollen angezeigt werden.
Am liebsten wäre mir, wenn per Inputbox der Suchbegriff eingegeben werden könnte.
Danke für Hilfe und
Gruß, Dieter(Drummer)

Code unter Tabellenblatt1:

'Herber: von Bernd am 10.09.2017 17:00:48
'Spalte B nach Sucbegriff aus A2 filtern

Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Me.Range("A2")) Is Nothing Then Exit Sub 'Suchbegriff in A2
    If Me.Cells(1, 2) = "" Then
        Me.Columns("B:B").AutoFilter
    Else
        Me.Columns("B:C").AutoFilter Field:=1, _
               Criteria1:="=" & ActiveSheet.Cells(2, 4)
    End If
End Sub
Komplette Datei (Beisliele aus Herber's Archiv) anbei:
https://www.herber.de/bbs/user/116200.xlsm

  

Betrifft: AW: VBA: Filter zeigt falsches Ergebnis von: UweD
Geschrieben am: 12.09.2017 16:22:41

Kann es sein, dass du mit Spalten und Zeilen durcheinander kommst??


Me.Cells(1, 2) ist Zelle "B2"


Criteria1:="=" & ActiveSheet.Cells(2, 4) ist Zelle "D2", da steht nichts, was im unteren Bereich vorkommt.


Wonach soll denn fefiltert werden?

LG UweD


  

Betrifft: AW: VBA: Filter zeigt falsches Ergebnis von: UweD
Geschrieben am: 12.09.2017 16:30:55

meinst du das so?

'Herber: von Bernd am 10.09.2017 17:00:48
'Spalte B nach Sucbegriff aus A2 filtern
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Me.Range("A2")) Is Nothing Then Exit Sub 'Suchbegriff in A2
    If Me.Cells(2, 1) = "" Then
        Me.Columns("B:B").AutoFilter
    Else
        Me.Columns("B:C").AutoFilter Field:=1, _
               Criteria1:="=*" & ActiveSheet.Cells(2, 1) & "*"
    End If
End Sub

Ich hab noch die Joker * davor und dahinter gesetzt, so wird auch das Wort als Teilder Zelle gefunden
Sonst muss Genau der TEXT gefunden werden

LG UweD


  

Betrifft: AW: VBA: Filter zeigt falsches Ergebnis von: Dieter(Drummer)
Geschrieben am: 12.09.2017 16:42:31

Hallo UweD,

das sieht schon prima aus und Danke erstmal.

Aber, wenn der Filter aktiv ist, z.B. mir dem Wort "Text" in A2, wird korrekt gefiltert, nur ist die erste gefundene Zeile des Filters in diesem Fall die Zeile 8. Die Zeile 1 bleibt erhalten und Zeilen 3 bis inkl. 7 sind ausgeblendet. Wäre es nicht richtig, wenn die erste gefundene Zeile bei der Zeile 4 beginnen würde? Wäre schön, wenn du das mir noch angeben kannst.

Gruß, Dieter(Drummer)


  

Betrifft: AW: VBA: Filter zeigt falsches Ergebnis von: UweD
Geschrieben am: 13.09.2017 09:40:07

Hallo

dann muss der Filter in Zeile 3 gesetzt werden.


Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Me.Range("A2")) Is Nothing Then Exit Sub 'Suchbegriff in A2 
    If Me.Cells(2, 1) = "" Then
        If Me.FilterMode Then Me.ShowAllData ' Autofilter alle 
    Else
        If Me.AutoFilterMode Then Me.AutoFilterMode = False ' Autofilter ausschalten 
        Me.Range("B3:C3").AutoFilter Field:=1, _
               Criteria1:="=*" & ActiveSheet.Cells(2, 1) & "*"
    End If
End Sub

LG UweD


  

Betrifft: AW: Danke UweD, einfach perfekt ... von: Dieter(Drummer)
Geschrieben am: 13.09.2017 10:56:23

... herzlichen Dank.
Ich habe inzwischen auch eine Lösung gebastelt (auch Teile aus dem Internet), um den Suchbegriff per Inputbox eingeben zu können:

'Eingabe Suchbegriff in Tabelle1, A2

Sub Such_Eingabe()
   Dim sTxt As String
Worksheets("Tabelle1").Activate
sTxt = InputBox("Suchbegriff eingeben:")
   
   If sTxt = "" Then Exit Sub
   'MsgBox sTxt
   Range("A2").Value = sTxt
End Sub
Funktioniert auch.

Danke nochmal und
Gruß, Dieter(Drummer)


Beiträge aus den Excel-Beispielen zum Thema "VBA: Filter zeigt falsches Ergebnis"