Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Hilfe bei VBA-Code für dynamische Dropdown-Liste in Excel 2019
#1
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!
.xlsm   TestVBA.xlsm (Größe: 228,17 KB / Downloads: 7)
Antworten Top
#2
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.
Code:
https://1drv.ms/x/s!AkhQiTYzrHnx41phtgJy1TZN8oRD?e=wRIr6L
 (ein automatischer Link fuznktioniert in diesem Forum nicht, daher kopieren und in die Adressleiste eines Browsers einfügen)
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:
  • Maximus
Antworten Top
#3
Guten Morgen ,

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.

Vielen Dank im Voraus für eure Unterstützung.

Mit freundlichen Grüßen
Antworten Top
#4
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:
  • Maximus
Antworten Top
#5
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.

Ich danke euch erneut für eure Hilfe
Antworten Top
#6
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")
   
    rngList.Sort Key1:=rngList, Order1:=xlAscending, Header:=xlNo
   
    filterText = Left(cell.Value, 1)
   
    rngList.AutoFilter Field:=1, Criteria1:=filterText & "*", Operator:=xlFilterValues
   
    With cell.Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=" & ws.Name & "!" & rngList.SpecialCells(xlCellTypeVisible).Address
        .IgnoreBlank = True
        .InCellDropdown = True
        .ShowInput = True
        .ShowError = True
    End With
   
    rngList.AutoFilter
End Sub
Antworten Top
#7
Frag doch deinen Kollegen...

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.
Hat Dir mein Beitrag geholfen? Dann hilf auch Du - mit einer Spende an Wikipediadie Tafeln oder aktion-deutschland-hilft.de
Antworten Top
#8
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!!!
Antworten Top
#9
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, 11: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. 

Was ergaben deine Recherchen?
Hat Dir mein Beitrag geholfen? Dann hilf auch Du - mit einer Spende an Wikipediadie Tafeln oder aktion-deutschland-hilft.de
Antworten Top
#10
und verzichte immer auf verbundene Zellen.


Angehängte Dateien
.xlsb   __straße_snb.xlsb (Größe: 238,14 KB / Downloads: 7)
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
[-] Folgende(r) 2 Nutzer sagen Danke an snb für diesen Beitrag:
  • Maximus, Rudi'S
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste