Suchfeld
24.09.2014 11:15:33
Daniel
Ich habe mir da eine Tabelle mit 2 Makros zusammengebastelt, die man in dem Sceenshot oben sieht. Das erste bezieht sich auf die Zeile 1 und ist eine Art Autofiltersuche(wenn in ein Feld der Zeile 1 etwas eingegeben wird, wird die Spalte unter der Eingabe nach dem Begriff durchsucht und wiedergegeben). Makro2 ist der Filter aus Button, der beim klicken die Tabelle wiederherstellt.
Meine Frage wäre, Wie muss der Code geändert werden, damit beim Klick auf den Button nicht nur alle Daten wieder ersichtlich werden in der Tabelle, sondern gleichzeitig auch in Zelle A1 die Eingabe des Suchfelds reseted/gelöscht wird.
Zweite Frage wäre, da sich die Sucheingabe auf die komplette Zeile 1 bezieht(ich brauche aber nur die Sucheingabe in Zelle A1), wie ich die Sucheingabe auf Zelle A1 beschränken kann(also B1,C1.usw. sollen nicht als Sucheingabe verwendet werden können.
Folgenden Code habe ich für beide hinterlegt:
Sub Filter()
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
Selection.AutoFilter Field:=1
End Sub
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim raBereich As Range
Dim raZelle As Range ' Variable für die Zelle als Range
' Wirkung des Codes auf Zeile 1 der Tabelle im Filterbereich zulassen
Set raBereich = Intersect(Target, Range(Cells(1, ActiveSheet.AutoFilter.Range(1).Column), _
Cells(1, ActiveSheet.AutoFilter.Range(1).Column + ActiveSheet.AutoFilter.Filters.Count - _
_
1)))
' Eingabe erfolgte im festgelegten Bereich
If Not raBereich Is Nothing Then
' Bildschirmaktualisierung aus
Application.ScreenUpdating = False
' Reaktion auf Eingabe abschalten
Application.EnableEvents = False
' Schleife über alle Zellen der Zeile 1 der Tabelle
For Each raZelle In raBereich
' Bezieht sich auf den Filterbereich
With ActiveSheet.AutoFilter.Range
' Eingabe wurde gelöscht
If raZelle = "" Then
' Autofilter für das betreffende Fald zurücksetzen
.AutoFilter Field:=raZelle.Column + 1 - ActiveSheet.AutoFilter.Range(1). _
Column
' in die betreffende Zelle eintragen
raZelle = "Suche "
Else
' Suchkriterium ist eine Zahl
If IsNumeric(raZelle) Then
' Autofilter für das betreffende Feld setzen, Filterkriterium "entspricht" _
_
.AutoFilter Field:=raZelle.Column + 1 - ActiveSheet.AutoFilter.Range(1). _
_
Column, _
Criteria1:="=" & raZelle
' Suchkriterium ist ein Datum
ElseIf IsDate(raZelle) Then
' Autofilter für das betreffende Feld setzen
' es werden 2 Kriterien verwendet, weil mit Kriterium "=" das Datum nicht _
_
gefiltert wird
.AutoFilter Field:=raZelle.Column + 1 - ActiveSheet.AutoFilter.Range(1). _
_
Column, _
Criteria1:=">=" & raZelle.Value2, Criteria2:="
Private Sub CommandButton1_Click()
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
Selection.AutoFilter Field:=1
End Sub