Automatische Filterung in Auswahlliste bei Eingabe

17/04/2009 - 12:08 von Daniel | Report spam
Halle Leute,

Ich habe in Excel 2007 eine Datei erstellt, bei der es eine Spalte mit einer
Auswahlliste für zahlreiche Tàtigkeiten gibt. Wenn ich mit der Maus durch
die Liste scrolle, ist es recht zeitaufwàndig, bis ich den richtigen Eintrag
getroffen habe. Schöner wàre es, wenn zum Beispiel mit der Eingabe "e", nur
noch die Tàtigkeiten angezeigt würden, die mit diesem Buchstaben beginnen.
Und je lànger die Eingabe wird, umso kleiner sollen die möglichen Treffer
werden. So, wie man es aus jeder guten Suche kennt. Ich bilde mir ein, Excel
konnte das schon mal, aber ich bin mir nicht sicher. Ginge das denn? Wichtig
ist vielleicht noch, dass der Ausfüller dieser Tabelle nur Excel 2003 zur
Verfügung hat.

Viele Grüße
Daniel
 

Lesen sie die antworten

#1 Andreas Killer
17/04/2009 - 16:23 | Warnen spam
Daniel schrieb:

Ich habe in Excel 2007 eine Datei erstellt, bei der es eine Spalte mit
einer Auswahlliste für zahlreiche Tàtigkeiten gibt. Wenn ich mit der
Maus durch die Liste scrolle, ist es recht zeitaufwàndig, bis ich den
richtigen Eintrag getroffen habe. Schöner wàre es, wenn zum Beispiel mit
der Eingabe "e", nur noch die Tàtigkeiten angezeigt würden, die mit
diesem Buchstaben beginnen. Und je lànger die Eingabe wird, umso kleiner
sollen die möglichen Treffer werden. So, wie man es aus jeder guten


Ich würde das mit Hilfe eines Autofilters bewerkstelligen.

Generell würde ich über der Liste eine (ggf. zwei) Zeile(n) einfügen
und in derselben dann einen Autofilter setzen. Dann könnte man via
Worksheet_Change eine(n) Zelle(nbereich) überwachen und den Autofilter
entsprechend der Spalte setzen. Hat aber den Nachteil das die
Aktualisierung des Autofilters erst nach Abschluß der Eingabe erfolgt.

Wenn man auf jeden Tastendruck reagieren möchte, dann ließe sich das
nur über eine Textbox machen, aber die in einer "normalen" Tabelle zu
haben ist eher unschön.

Hier mal ein Beispiel für eine Liste mit gesetztem Autofilter in
Spalte A und A1 selbst als "Filterzelle".

Ich habs ein wenig universeller gestaltet, für den Fall das Du diese
Technik auf eine Liste mit mehr als einer Spalte anwenden möchtest.

Wenn Du nicht weißt was Du damit machen sollst, bitte hier lesen:
http://www.online-excel.de/excel/si....php?fD#s4

Andreas.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim I As Integer
'Mehr als eine Zelle geàndert?
If Target.Count > 1 Then Exit Sub
'Sind wir im Eingabebereich (Zelle A1)?
If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub
'Ist der Filter überhaupt da?
If Not ActiveSheet.AutoFilterMode Then Exit Sub
'Feldnummer für den Filter berechnen
I = Target.Column - ActiveSheet.AutoFilter.Range.Column + 1
'Ist die Zelle leer?
If IsEmpty(Target) Then
'Alles in dieser Spalte anzeigen
Target.AutoFilter Field:=I
Else
'Filter setzen
Target.AutoFilter Field:=I, Criteria1:=Target
End If
End Sub

Ähnliche fragen