15.12.2024, 13:04
Hallo zusammen,
ich habe eine Tabelle mit einem Autofilter, den ich auch duch Eingabe eines Suchbegriffs in einer Zelle über VBA bedienen möchte. In Spalte A habe ich Begriffe (formatiert als "Standard"), in Spalte B habe ich Nummern, die ebenfalls als Standard formatiert sind.
In der jeweils ersten Zeile soll der Suchbegriff eingegeben werden, nach dem das Macro dann filtert. Dabei soll nicht nur nach dem exakten Begriff, sondern auf sein Vorkommen irgendwo in der Zelle geprüft werden.
Für Spalte A funktioniert das auch wie gewünscht (z.B. Filtern nach "ff 0" - bitte nicht hinterfragen, ist nur ein Beispiel).
In Spalte B funktioniert das nicht. Setze ich den Suchbegriff zwischen zwei "*" am Anfang und Ende, dann wird gar nichts gefiltert. Suche ich nur nach dem Suchbegriff (ohne "*"), dann filtert das Macro genau diese Nummer, aber eben nicht das Vorkommen in anderen Zeilen: so möchte ich bei Eingabe von "5900" alle Zeilen angezeigt bekommen, wo "5900" oder "805900" oder "905900" vorkommen. Ebenso soll bei "612" angezeigt werden "6120", "6122","806120", "906120", "806122" und "906122".
Die Umwandlung der Formatierung der Spalte B in "Text" hat nicht geholfen.
Gibt es eine Möglichkeit, Spalte B nach meinen Vorstellungen über ein Macro zu filtern?
Hier mein Code:
Danke schon mal für's Lesen.
ich habe eine Tabelle mit einem Autofilter, den ich auch duch Eingabe eines Suchbegriffs in einer Zelle über VBA bedienen möchte. In Spalte A habe ich Begriffe (formatiert als "Standard"), in Spalte B habe ich Nummern, die ebenfalls als Standard formatiert sind.
In der jeweils ersten Zeile soll der Suchbegriff eingegeben werden, nach dem das Macro dann filtert. Dabei soll nicht nur nach dem exakten Begriff, sondern auf sein Vorkommen irgendwo in der Zelle geprüft werden.
Für Spalte A funktioniert das auch wie gewünscht (z.B. Filtern nach "ff 0" - bitte nicht hinterfragen, ist nur ein Beispiel).
In Spalte B funktioniert das nicht. Setze ich den Suchbegriff zwischen zwei "*" am Anfang und Ende, dann wird gar nichts gefiltert. Suche ich nur nach dem Suchbegriff (ohne "*"), dann filtert das Macro genau diese Nummer, aber eben nicht das Vorkommen in anderen Zeilen: so möchte ich bei Eingabe von "5900" alle Zeilen angezeigt bekommen, wo "5900" oder "805900" oder "905900" vorkommen. Ebenso soll bei "612" angezeigt werden "6120", "6122","806120", "906120", "806122" und "906122".
Die Umwandlung der Formatierung der Spalte B in "Text" hat nicht geholfen.
Gibt es eine Möglichkeit, Spalte B nach meinen Vorstellungen über ein Macro zu filtern?
Hier mein Code:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Spalte As Integer
Dim SuchBegriff As String
Application.EnableEvents = False
Spalte = Target.Column
With Me.ListObjects(1)
If .AutoFilter Is Nothing Then .Range.AutoFilter
' ### Begriff filtern (A1) ###
If Target.Address = "$A$1" Then
SuchBegriff = Target.Value
If SuchBegriff = "" Then
.Range.AutoFilter Field:=Spalte
Else
SuchBegriff = "*" & SuchBegriff & "*"
.Range.AutoFilter Field:=Spalte, Criteria1:=SuchBegriff
End If
ActiveWindow.ScrollRow = 1
Application.EnableEvents = True
Exit Sub
End If
' ### Konto-Nr. filtern (B1) ###
If Target.Address = "$B$1" Then
SuchBegriff = Target.Value
If SuchBegriff = "" Then
.Range.AutoFilter Field:=Spalte
Else
' SuchBegriff = "*" & SuchBegriff & "*"
.Range.AutoFilter Field:=Spalte, Criteria1:=SuchBegriff
End If
ActiveWindow.ScrollRow = 1
Application.EnableEvents = True
Exit Sub
End If
End With
End Sub
Danke schon mal für's Lesen.
Herzliche Grüße aus dem Rheinland
Jörg
[Windows 10, Microsoft 365]
Jörg
[Windows 10, Microsoft 365]