Betreff: Hilfe bei VBA-Code für dynamische Dropdown-Liste in Excel 2019 Hallo Forum-Mitglieder, ich stehe vor einer Herausforderung bei der Erstellung eines VBA-Codes für Excel 2019 und hoffe auf eure Unterstützung. In meinem Excel-Blatt 'Meldung-Blatt 1' befindet sich in Zelle E8 eine Dropdown-Liste mit 10064 Straßennamen. Die Quelle für die Straßennamen ist =Straße!$A$2:$A$10064. Ich möchte, dass die Dropdown-Liste durchsuchbar ist, sodass die Auswahl dynamisch reduziert wird, wenn die Anfangsbuchstaben einer Straße eingegeben werden. Dabei soll der Code sicherstellen, dass mit zunehmender Anzahl von eingegebenen Buchstaben die Auswahl in der Dropdown-Liste entsprechend reduziert wird. Leider funktioniert mein bisheriger Code nicht wie gewünscht. Hier ist mein aktueller Code:
Code:
Private Sub Worksheet_Change(ByVal Target As Range) Dim StraßenBereich As Range Dim FilterKriterium As String Dim LetzteZeile As Long
' Überprüfen, ob die Änderung in Zelle E8 stattgefunden hat If Target.Address = "$E$8" Then Application.EnableEvents = False ' Events deaktivieren, um Endlosschleifen zu vermeiden Me.AutoFilterMode = False ' Vorhandene Filter deaktivieren
' Den Straßenbereich definieren (Anpassen Sie dies an Ihre tatsächliche Datenbereich) LetzteZeile = Sheets("Straße").Cells(Sheets("Straße").Rows.Count, "A").End(xlUp).Row Set StraßenBereich = Sheets("Straße").Range("A2:A" & LetzteZeile)
' Filterkriterium aus Zelle E8 abrufen FilterKriterium = Me.Range("E8").Value
' Filter anwenden, wenn ein Kriterium vorhanden ist If FilterKriterium <> "" Then StraßenBereich.AutoFilter Field:=1, Criteria1:="*" & FilterKriterium & "*" End If
' Events wieder aktivieren Application.EnableEvents = True End If End Sub
Ich wäre sehr dankbar, wenn jemand mir bei der Verbesserung dieses Codes helfen könnte. Vielen Dank im Voraus!
TestVBA.xlsm (Größe: 228,17 KB / Downloads: 7)
21.11.2023, 07:59 (Dieser Beitrag wurde zuletzt bearbeitet: 21.11.2023, 08:12 von RPP63.)
Moin! Ich habe mir die Datei (noch) nicht angesehen. Dennoch ein paar Anmerkungen: • in meinem aktuellen Excel 365 funktioniert die "Reduzierung nach Zeicheneingabe", in Deinem Excel 2019 nicht • Du nutzt ein Worksheet_Change-Event, welches erst nach Abschluss der Bearbeitung (z.B. durch Enter) anspringt • sehr viel besser wäre eine Textbox oder ein ActiveX-Dropdown, weil die ein "echtes" Change-Event haben
Mal sehen, vielleicht habe ich im Laufe des Tages Zeit, etwas nach meinem Gusto zu erstellen.
Gruß Ralf Wenn Excel Online eine Option ist: Hier mal der Freigabelink zur Datei aus obigem Screenshot.
vielen Dank für die Rückmeldung. In der aktuellen Office 365-Version wurde das Problem mit der Dropdown-Liste ohne VBA-Code gelöst. Leider bin ich aufgrund von Beschränkungen auf die Verwendung von Excel 2019 angewiesen. In diesem Zusammenhang wäre ich sehr dankbar, wenn mir jemand einen funktionierenden VBA-Code für Excel 2019 zur Verfügung stellen könnte, um die Dropdown-Liste zu durchsuchen.
21.11.2023, 09:00 (Dieser Beitrag wurde zuletzt bearbeitet: 21.11.2023, 09:02 von RPP63.)
Du brauchst Deinen Wunsch nicht zu wiederholen …
Ich meine Antwort auch nicht, mache es aber trotzdem: Das Worksheet_Change einer Zelle ist das falsche Ereignis! Es springt nämlich erst nach Beendigung des Bearbeitungsmodus an, insofern ist es sinnlos!
Es handelt sich doch offensichtlich um ein simples Formular, welches danach gespeichert / gedruckt wird. Warum also nicht die Online-Version? (die sogar auf einem Android-Pad funktioniert, da ohne VBA)
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:1 Nutzer sagt Danke an RPP63 für diesen Beitrag 28 • Maximus
ich möchte noch anmerken, dass die Nutzung der Online-Version in meiner spezifischen Umgebung nicht möglich ist. Das Formular wird dauerhaft in einer Umgebung verwendet, in der ausschließlich Excel 2019 verfügbar ist. Daher bin ich zwingend auf einen VBA-Code angewiesen, um die gewünschte Funktionalität umzusetzen.
Ein Arbeitskollege hat folgenden Code geschrieben. Leider funktioniert der auch nicht. Wäre super, wenn ein Experte sich diesen Code mal anschauen könnte, wo hier der Fehler liegt. Evtl. kann man aus den beiden Codes einen Code schreiben, der tatsächlich funktioniert.
Code:
'******************************************************* ' Code für Durchsuchbares Dropdown-Feld '******************************************************* Sub CodeFürDurchsuchbaresDropdownFeld() Dim ws As Worksheet Dim cell As Range Dim rngList As Range Dim filterText As String
' Änderung des Blattnamens auf "Meldung-Blatt 1" Set ws = ThisWorkbook.Sheets("Meldung-Blatt 1")
Set cell = ws.Range("A1") Set rngList = ws.Range("Straße!A2:A10064")
Was heißt denn "funktioniert nicht"? Geht es vielleicht ETWAS genauer?
Kurz: Mit einer Gültigkeitsliste wird das in deiner Version nicht klappen. Nimm ein ActiveX-Steuerelement (Combobox) und bediene dich der zig Lösungen, die bereits fertig im Netz zu finden sind. Ein User mit deiner Erfahrung sollte zumindest in der Lage sein, fertige Lösungen zu suchen und umzusetzen.
Der Kollege ist auch mit seinem Latein am Ende. Ich leider auch. Funktioniert nicht bedeutet es kommt nicht zu der gewünschten Reduzierung der Buchstaben bei Eingabe eines Buchstabes. Die gewünschte Aktion bleibt aus. In Frage kommt ausschließlich ein VBA Code!!!
Thema "funktioniert nicht": Von einem erfahren User wie dir erwartet man, dass du den Fehler präziser beschreiben kannst, unternommene Schritte erläuterst und zumindest mit dem Finger in die richtige Richtung zeigen kannst - vor allem nach den bisherigen Hinweisen. Wann und wie habt ihr den Code denn überhaupt gestartet? Das wäre das mindeste, was zu erwarten ist an Info - denn von alleine tut der mal überhaupt garnix.
(21.11.2023, 12:19)Maximus schrieb: In Frage kommt ausschließlich ein VBA Code!!!
brauchst ja nicht gleich rumbrüllen.
Auch ein ActiveX-Steuerelement erwartet übrigens VBA-Code.
Wenn dein Satz allerdings heißt, ihr beharrt stur und ohne jeden Grund auf einer Gültigkeitsliste, wird es mit euren Ansätzen nicht klappen. Auch ignoriert die Gültigkeitsliste Autofilter - also ist auch dieser Ansatz ungeeignet.