Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Abhängige Dropdown Listen mittels VBA

Abhängige Dropdown Listen mittels VBA
07.09.2019 17:55:26
Markus
Liebes Forum,
ich möchte gerne 3 Dropdown-Listen in Abhängigkeit zueinander setzen. Je nach Auswahl, sollen sich die nachfolgenden Dropdown-Listen füllen (farblich markiert in der Bsp-Datei). Leider gelingt es mir nur bei der Hälfte :(
https://www.herber.de/bbs/user/131904.xlsm
Vielen Dank euch!
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Abhängige Dropdown Listen mittels VBA
07.09.2019 18:10:21
Hajo_Zi
http://hajo-excel.de/vba_dropdown.htm

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
AW: Abhängige Dropdown Listen mittels VBA
07.09.2019 19:11:32
Markus
Hallo Hajo,
Danke für deine Antwort. Die Indirekt-Methode ist mir bekannt. Ich will es mittels VBA lösen.
Kann mir bitte jemand weiterhelfen :)
Danke!
Anzeige
AW: Abhängige Dropdown Listen mittels VBA
10.09.2019 09:22:48
Matthias
Antwort ist ausversehen zum vorherigen Post darüber eingestellt.
VG
AW: Abhängige Dropdown Listen mittels VBA
10.09.2019 10:37:48
Markus
Hallo Matthias,
ich bin leider erst heute Vormittag zum Testen gekommen, deswegen die späte Rückmeldung. Funktioniert einwandfrei und vielen Dank für deine Mühe! Echt top!
AW: Abhängige Dropdown Listen mittels VBA
08.09.2019 09:51:59
Matthias
Moin!
HIer mal ein Beispiel. Die Anordnung der Daten ist dafür aber suboptimal. Deshalb musst du im Code den Bereich fest angeben. Wenn du die DAten in einem extra Blatt aufführst und anders Strukturierest, könnte man das auch automatisch, ohne Bereich machen und du könntest ggf. leichter Werte hinzufügen. Bei dir müsstest du sonst ggf. jeden Zielbereich anfügen. Die Listen für die in Spalte E angezeigten WErte, ist in der extra sub und dem Worksheetchange. Dort je nach Wert in Spalte A eine Liste erstellen und die Ergebnisse der Auswahl (Werte in Spalte C) und deren Anzeigebereich (Bereich in Spalte E) ergänzen. Hört sich jetzt kompliziert an, kann man aber am Beispiel erkennen. Damit deine Auswahl in Spalte A auch nur die eingetragenen Werte hat, das hier mal in DieseArbeitsmappe packen (damit wird beim Start die Gültigkeit in A gesetzt und in C und E gelöscht.
Private Sub Workbook_Open()
Dim zeile As Long
Dim werte As Variant
werte = ""
For zeile = 2 To 19
If Tabelle1.Cells(zeile, 1)  "" Then werte = werte & Tabelle1.Cells(zeile, 1) & ","
Next
If werte  "" Then werte = Left(werte, Len(werte) - 1)
With Tabelle1.Range("A21").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=werte
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
Tabelle1.Range("c21").Validation.Delete
Tabelle1.Range("e21").Validation.Delete
End Sub
und das hier in Tabelle 1
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ende
Application.EnableEvents = False
Select Case Target.Address
Case "$A$21"
Range("C21").Value = "please choose..."
'Range("E21").Value = "please choose..."
gültigkeit_einfügen 1, Target.Value, "C21"
Range("e21").Validation.Delete
Case "$C$21"
Range("E21").Value = "please choose..."
bereich = Split(Tabelle1.Range("A21").Validation.Formula1, ";")
auswahl = Application.WorksheetFunction.Match(Tabelle1.Range("A21").Value2, bereich, _
0)
gültigkeit_einfügen auswahl + 1, Target.Value, "E21"
Case "$E$21"
Case Else
End Select
ende:
Application.EnableEvents = True
End Sub
Sub gültigkeit_einfügen(mylist, suche, ziel)
On Error GoTo ende
Dim bereich As Variant
Dim eintrag As Long
bereich = "="
Application.EnableEvents = True
'für jeden Wert in Spalte A eine Liste, dabei immer wert und anzeigebereich
'gibt es keinen Anzeige ereich dann "" eingeben
'die Listen im Array listen auflisten
liste1 = Array("Test1", "C2:C4", "Test2", "C13:C15")
liste2 = Array("a", "e2:e4", "b", "e5:e7", "c", "e8:e10")
liste3 = Array("x", "e13:e15", "y", "", "z", "")
listen = Array(0, liste1, liste2, liste3)
For eintrag = 0 To UBound(listen(mylist)) Step 2
If listen(mylist)(eintrag) = suche Then
bereich = bereich & listen(mylist)(eintrag + 1)
Exit For
End If
Next
If bereich  "=" Then
With Tabelle1.Range(ziel).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=bereich
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End If
ende:
Application.EnableEvents = True
End Sub

VG
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Abhängige Dropdown-Listen in Excel mit VBA erstellen


Schritt-für-Schritt-Anleitung

Um abhängige Dropdown-Listen in Excel zu erstellen, die sich basierend auf der Auswahl in vorherigen Listen ändern, kannst du VBA verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und erstelle ein neues Arbeitsblatt.

  2. Aktiviere die Entwicklertools:

    • Gehe zu Datei > Optionen > Menüband anpassen.
    • Aktiviere das Kontrollkästchen Entwicklertools.
  3. Füge die Dropdown-Listen hinzu:

    • Klicke auf Entwicklertools > Einfügen > Kombinationsfeld (Formularsteuerelement).
    • Zeichne ein Kombinationsfeld auf dein Arbeitsblatt.
  4. Füge den folgenden VBA-Code ein:

    • Drücke Alt + F11, um den VBA-Editor zu öffnen.
    • Klicke mit der rechten Maustaste auf DieseArbeitsmappe und wähle Einfügen > Modul.
    • Füge den Code für die Dropdown-Listen ein:
      
      Private Sub Workbook_Open()
      ' Code für das Öffnen der Arbeitsmappe
      ...
      End Sub

    Private Sub Worksheet_Change(ByVal Target As Range) ' Code zur Aktualisierung der Dropdown-Listen ... End Sub

  5. Definiere die Werte für die Dropdown-Listen:

    • Lege die Werte in einem separaten Blatt oder im selben Blatt in einem bestimmten Bereich fest.
  6. Teste die Dropdown-Listen:

    • Wähle einen Wert aus der ersten Dropdown-Liste und überprüfe, ob die nachfolgenden Listen entsprechend aktualisiert werden.

Häufige Fehler und Lösungen

  • Fehler: Dropdown-Listen aktualisieren sich nicht.

    • Lösung: Stelle sicher, dass der VBA-Code korrekt eingegeben wurde und dass die Application.EnableEvents-Eigenschaft nicht deaktiviert ist.
  • Fehler: Der Bereich für die Validierung ist nicht festgelegt.

    • Lösung: Überprüfe den VBA-Code, insbesondere die Zeilen, die den Bereich für die Validierung definieren. Möglicherweise musst du den Bereich manuell anpassen.

Alternative Methoden

Wenn du keine VBA-Lösungen verwenden möchtest, kannst du auch die INDIREKT-Funktion nutzen, um abhängige Dropdown-Listen zu erstellen. Hierbei definierst du die Listenwerte in benannten Bereichen und verwendest INDIREKT, um die Werte basierend auf der Auswahl in einer vorherigen Liste abzurufen.


Praktische Beispiele

Hier ist ein einfaches Beispiel für abhängige Dropdown-Listen:

  1. Erstelle eine Liste von Kontinenten in Spalte A und Ländern in Spalte B.
  2. Verwende die INDIREKT-Funktion wie folgt:
    • In Zelle C1: =INDIREKT(A1) (wobei A1 die Auswahl des Kontinents ist).

Tipps für Profis

  • Nutze die Named Ranges, um die Verwaltung der Dropdown-Listen zu vereinfachen.
  • Überlege, ob du zusätzliche Fehlerbehandlungen in deinen VBA-Code einfügen möchtest, um eine bessere Benutzererfahrung zu gewährleisten.
  • Speichere deine Datei als .xlsm, um sicherzustellen, dass alle VBA-Funktionen funktionieren.

FAQ: Häufige Fragen

1. Wie kann ich mehrere abhängige Dropdown-Listen in Excel erstellen? Du kannst mehrere Dropdown-Listen erstellen, indem du den gleichen VBA-Ansatz für zusätzliche Listen anwendest und die entsprechenden Bereiche anpasst.

2. Funktionieren abhängige Dropdown-Listen auch in Excel Online? Leider unterstützen die Online-Versionen von Excel keine VBA-Skripte, sodass abhängige Dropdown-Listen nur in der Desktop-Version von Excel verfügbar sind.

3. Kann ich die Dropdown-Listen anpassen? Ja, du kannst die Dropdown-Listen anpassen, indem du die Werte im VBA-Code oder in den benannten Bereichen änderst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige