Tutorial: Dreistufige abhängige Dropdown-Listen in Word erstellen
Hier ist ein ausführliches Tutorial, wie du in Microsoft Word kaskadierende Dropdown-Listen (abhängige Listen) über drei Ebenen erstellst.
Da Word diese Funktion nicht nativ (wie Excel) anbietet, nutzen wir dafür die Inhaltssteuerelemente und ein kurzes VBA-Skript.
Dieses Tutorial zeigt dir, wie du eine Auswahl erstellst, bei der Ebene 2 von Ebene 1 abhängt und Ebene 3 von Ebene 2.
Schritt 1: Registerkarte „Entwicklertools“ aktivieren
Bevor du beginnst, musst du sicherstellen, dass du Zugriff auf die Entwicklerwerkzeuge hast.
- Klicke mit der rechten Maustaste auf eine beliebige Stelle im Menüband (Ribbon).
- Wähle Menüband anpassen.
- Setze in der rechten Liste ein Häkchen bei Entwicklertools.
- Bestätige mit OK.
Schritt 2: Die Dropdown-Felder einfügen
Wir benötigen drei Inhaltssteuerelemente.
- Gehe zu Entwicklertools > Steuerelemente und klicke auf das Symbol Dropdown-Inhaltssteuerelement (das Taschenrechner-Icon mit dem Pfeil).
- Wiederhole dies noch zweimal, sodass du drei Felder untereinander oder nebeneinander hast.
Schritt 3: Titel und Tags festlegen (Wichtig!)
Damit das Programm weiß, welches Feld welches ist, müssen wir Namen vergeben.
- Klicke das erste Dropdown an und wähle oben Eigenschaften.
- Gib bei Titel und Tag jeweils
Ebene1ein. - Klicke das zweite Dropdown an -> Eigenschaften -> Titel & Tag:
Ebene2. - Klicke das dritte Dropdown an -> Eigenschaften -> Titel & Tag:
Ebene3.
Schritt 4: Die erste Ebene füllen
- Gehe in die Eigenschaften von
Ebene1. - Füge unter „Dropdownlisten-Eigenschaften“ deine Hauptkategorien hinzu (z. B. Obst, Gemüse).
Schritt 5: Den VBA-Code hinzufügen
Jetzt programmieren wir die Abhängigkeiten.
- Drücke
ALT + F11, um den VBA-Editor zu öffnen. - Suche im linken Projekt-Explorer dein Dokument und mache einen Doppelklick auf ThisDocument (bzw. DiesesDokument).
- Kopiere den folgenden Code und füge ihn in das weiße Fenster ein:
Private Sub Document_ContentControlOnExit(ByVal ContentControl As ContentControl, Cancel As Boolean)
Dim cc2 As ContentControl
Dim cc3 As ContentControl
' Verweise auf die abhängigen Felder setzen
Set cc2 = ActiveDocument.SelectContentControlsByTag("Ebene2").Item(1)
Set cc3 = ActiveDocument.SelectContentControlsByTag("Ebene3").Item(1)
' Wenn Ebene 1 geändert wurde
If ContentControl.Tag = "Ebene1" Then
cc2.DropdownListEntries.Clear
cc2.DropdownListEntries.Add "Bitte wählen...", ""
cc3.DropdownListEntries.Clear
cc3.DropdownListEntries.Add "Bitte wählen...", ""
Select Case ContentControl.Range.Text
Case "Obst"
cc2.DropdownListEntries.Add "Apfel"
cc2.DropdownListEntries.Add "Beere"
Case "Gemüse"
cc2.DropdownListEntries.Add "Salat"
cc2.DropdownListEntries.Add "Wurzel"
End Select
End If
' Wenn Ebene 2 geändert wurde
If ContentControl.Tag = "Ebene2" Then
cc3.DropdownListEntries.Clear
cc3.DropdownListEntries.Add "Bitte wählen...", ""
Select Case ContentControl.Range.Text
Case "Apfel"
cc3.DropdownListEntries.Add "Gala"
cc3.DropdownListEntries.Add "Braeburn"
Case "Beere"
cc3.DropdownListEntries.Add "Erdbeere"
cc3.DropdownListEntries.Add "Himbeere"
Case "Salat"
cc3.DropdownListEntries.Add "Eisbergsalat"
cc3.DropdownListEntries.Add "Feldsalat"
End Select
End If
End Sub
Schritt 6: Funktionsweise verstehen & anpassen
- Trigger: Der Code wird immer dann ausgeführt, wenn du aus einem Dropdown-Feld hinausklickst (Exit-Event).
- Anpassung: Du kannst die
Case-Namen (z.B. "Obst") und dieAdd-Befehle einfach durch deine eigenen Begriffe ersetzen. Achte darauf, dass die Schreibweise exakt mit den Einträgen im Dropdown übereinstimmt.
Schritt 7: Speichern
Damit das Makro funktioniert, darfst du das Dokument nicht als normales .docx speichern.
- Gehe auf Datei > Speichern unter.
- Wähle als Dateityp Word-Dokument mit Makros (.docm).
So testest du es:
- Wähle in
Ebene1einen Eintrag (z. B. "Obst"). - Wichtig: Klicke irgendwo in den leeren Bereich des Dokuments, um das Feld zu verlassen.
- Klicke nun in
Ebene2. Du wirst sehen, dass die Liste nun die entsprechenden Unterkategorien (Apfel, Beere) enthält. - Wiederhole dies für
Ebene3.
Tipp: Wenn die Liste beim Auswählen sofort reagieren soll (ohne daneben zu klicken), wäre ein deutlich komplexerer Code mit "Class Modules" nötig. Für die meisten Formulare ist die hier gezeigte "OnExit"-Methode jedoch die stabilste und einfachste Lösung.