Dropdown- ähnliches für excel gesucht!

Hallo Fachleute,
möchte in einer Excel-Tabelle eine sich selber einschränkende Auswahl (ähnlich drop-down) einbauen.
Ich habe z.B. 460 Ortsnamen gespeichert, davon beginnen
35 mit „B“. Nach Eingabe von „B“ sollen sofort OHNE Eingabetaste alle 35 "B"s in einem sich öffnenden Fenster erscheinen.
Nach weiterer Eingabe von „A“ sollen sofort ohne Eingabetaste alle "BA"s erscheinen, nach Eingabe „D“ also alle "BAD"s usw.
Diese Auswahleinschränkung müsste also ein fortlaufender Prozess sein, bis zuletzt ein konkreter Wert übrig bleibt ( oder allenfalls Doppelgänger).
Kann mir dazu jemand weiterhelfen?

Vielen Dank im Voraus

möchte in einer Excel-Tabelle eine sich selber einschränkende
Auswahl (ähnlich drop-down) einbauen.
Ich habe z.B. 460 Ortsnamen gespeichert, davon beginnen
35 mit „B“. Nach Eingabe von „B“ sollen sofort OHNE
Eingabetaste alle 35 "B"s in einem sich öffnenden Fenster
erscheinen.
Nach weiterer Eingabe von „A“ sollen sofort ohne Eingabetaste
alle "BA"s erscheinen, nach Eingabe „D“ also alle "BAD"s usw.
Diese Auswahleinschränkung müsste also ein fortlaufender
Prozess sein, bis zuletzt ein konkreter Wert übrig bleibt (
oder allenfalls Doppelgänger).

Hallo Wilfried,

nachfoilgender Code erwartet deine Ortsliste mit einer Überschrift in Spalte Tabelle2!A
In Tabelle2!B1 steht der gleiche Titel (Zellinhalt) wie in Tabelle2!A1.

Gehe auf Tabelle1 und nimm ein Textfeld aus der Symbolleiste Steuerelementetootlbox.
Dann klicke unten mit rechts auf den Blattnamen, dann wähle „Code anzeigen“, dortrein kopierst du nachstehenden Code und schließt den VB-Editor.
Je nachdem was du in das Textfeld eingibst werden entsprechende Orte in Tabelle1!A aufgelsitet.

Private Sub TextBox1\_Change()
Dim Zei As Long
With Worksheets("Tabelle2")
 Zei = .Cells(Rows.Count, 1).End(xlUp).Row
 'If TextBox1.Text = "" Then Exit Sub
 .Range("B2").Value = TextBox1.Text
 .Range("A1:A" & Zei).AdvancedFilter Action:=xlFilterCopy, \_
 CriteriaRange:=.Range("B1:B2"), \_
 CopyToRange:=Worksheets("Tabelle1").Range("A1"), Unique:=True
End With
End Sub

Gruß
Reinhard

Hallo Reinhard,
zunächst vielen Dank für deine geistige Investition in mein Anliegen.
Habe deinen Vorschlag in ein neues Arbeitsblatt eingearbeitet.
Jetzt sehe ich bei mir in Tabelle 1 das Textfenster. Bei Eingabe eines Buchstaben erscheint die Meldung „laufzeitfehler 1004
Anwendungs oder objektbez. Fehler“.
Im Debugger ist die komplette Zeile

Zei = .Cells(Rows.Count, 1.End(x1Up).Row

gelb unterlegt.
Übrigens befindet sich in Tabelle2!A1 die Überschrift „Ortsliste“ und ab A2 nach unten die 450 Orte.
In Tabelle2!B1 steht ebenfalls „Ortsliste“, weiter nach unten leer.
Darf ich dich nochmal mit dem Problem behelligen???
Danke im Voraus
Wilfried

dynamische Auswahlliste
Hallo Wilfried,

Jetzt sehe ich bei mir in Tabelle 1 das Textfenster. Bei
Eingabe eines Buchstaben erscheint die Meldung „laufzeitfehler
1004
Anwendungs oder objektbez. Fehler“.
Im Debugger ist die komplette Zeile
Zei = .Cells(Rows.Count, 1.End(x1Up).Row
gelb unterlegt.

mal grundsätzlich, schreibe Codezeilen hier nicht rein sondern kopier sie rein. damit vermeidest du Schreibfehler und daraus entstehende Irrationen.
So war die Codezeile von mir nicht, da fehlt ein „)“
Da ich den Code getestet hatte bin ich brettsicher daß der Debugger mich auf dieses fehlende Klämmerchen hingewisen hätte.

Übrigens befindet sich in Tabelle2!A1 die Überschrift
„Ortsliste“ und ab A2 nach unten die 450 Orte.
In Tabelle2!B1 steht ebenfalls „Ortsliste“, weiter nach unten
leer.

Das ist egal was da steht, im Test stand bei mir „Orte“. Wichtig ist einzig daß in A1 und B1 das gleiche steht.

Darf ich dich nochmal mit dem Problem behelligen???

Ich kann nur raten was du anders gemacht hast und lasse das raten :smile:

Nimm nochmals eine neue leere Mappe, Alt+F11, Einfügen—Modul.
In dieses Modul kopierst du nachstehenden Code und läßt die prozedur
„TestlisteErzeugen“ einmalig ausführen mit Alt+F8… in Excel.
Dann hast du die gleiche Testumgebung wie ich sie hatte/habe.

Dann wie geschrieben oder wenn du eh schon im VB-Editor bist mit DOPPELklick auf „tabelle1“ das Modul des Blattes auswählen.
Dort dann den Code aus meiner ersten Antwort reinkopieren.

Dann MUß das funktionieren, naja, außer du hast kein deutsches Excel oder sonstige Gründe.

Gruß
Reinhard

Sub TestlisteErzeugen()
Dim Zei As Long, Z1 As Long, Z2 As Long, Z3 As Long, strX As String
Application.ScreenUpdating = False
With Worksheets("Tabelle2")
 .UsedRange.ClearContents
 .Range("A1:B1").Value = "Orte"
 Zei = 1
 For Z1 = 65 To 90
 For Z3 = 1 To 30
 strX = Chr(Z1)
 For Z2 = 1 To 9
 strX = strX & Chr(65 + Int(Rnd() \* 10))
 Next Z2
 Zei = Zei + 1
 .Cells(Zei, 1) = strX
 Next Z3
 Next Z1
 .Columns("A:A").Sort Key1:=.Range("A2"), Order1:=xlAscending, Header:=xlYes, \_
 OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End With
Worksheets("Tabelle1").OLEObjects.Add(ClassType:="Forms.TextBox.1", Link:=False, \_
 DisplayAsIcon:=False, Left:=51, Top:=20.25, Width:=149.25, Height:= \_
 20.25).Name = "TextBox1"
Application.ScreenUpdating = True
End Sub

Danke im Voraus
Wilfried

Hallo Reinhard,
vielen Dank für deine Bemühungen.
1.Die Klammer war tatsächlich da, ich hatte sie aber in meiner letzten Nachricht flüchtigerweise nicht aufgeführt. Sorry.
2. Durch den Hinweis deinerseits auf mögliche Übertragungsfehler beim Eintippen habe ich alles nochmals genau (teilweise mit Lupe) nachkontrolliert.
Und siehe da: Aus „END(x l UP).Row“ ist bei der Eingabe „END(x 1 UP).Row“ geworden.
Da steckte MEIN Fehler.
Jetzt- dank deines Hinweises- läuft’s wie gewünscht. Klasse…
Viele Grüße
Wilfried
PS: Den zweiten Vorschlag werde ich auch gleich noch ausprobieren…