Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1380to1384
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

Suchfeld

Suchfeld
24.09.2014 11:15:33
Daniel
Hallo liebe VBA´ler,
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.
Userbild
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

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suchfeld
24.09.2014 13:23:28
fcs
Hallo Daniel,
passte die folgende Zeile an:
    Set raBereich = Intersect(Target, Range(Cells(1, ActiveSheet.AutoFilter.Range(1).Column), _
Cells(1, ActiveSheet.AutoFilter.Range(1).Column)))
lösche die Zeile bzw. mache einen Kommentar draus.
                    raZelle = "Suche "
Ändere das Schaltflächen-Makro in
Private Sub CommandButton1_Click()
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
Range("A1")=""
End Sub
Gruß
Franz

Anzeige
AW: Suchfeld
24.09.2014 14:52:11
Daniel
Vielen Dank für die Antwort Franz. Das mit der Zeile1 und der Suche hat funktioniert, dass er nur in A1 sucht. Allerdings löscht er die Zelle A1 nicht wieder nachdem ich den Button klicke. Wäre toll, wenn du/irgendjemand hier noch Abhilfe wüsste..
Viele Grüße,
Daniel

AW: Suchfeld
24.09.2014 15:01:20
fcs
Hallo Daniel,
du musst halt in dem Makro, das die Schaltfläche startet diese 2 Zeilen einbauen.
    If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
Range("A1")=""
Ansonsten braucht du nur den Inhalt von A1 löschen. Das zeigt auch alle Daten an und die Zelle ist leer.
Gruß
Franz
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige