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

Forumthread: Von einander abhängige Dropdown Menüs in

Von einander abhängige Dropdown Menüs in
17.11.2020 12:56:58
Kratz
Hallo Leute,
Ich versuche es hier mal, vielleicht kann mir jemand auch in Bezug Word helfen, in VBA bin ich nicht besonders toll, möchte mir ein (Word)formular erstellen und benötige Eure Hilfe zu:
1.) Frage, ich möchte mit Dropdownfelder einsetzten dabei sollte das Menü im 2.Dropdown auf Grundlage der Auswahl aus dem 1.Dropdownmenü vorgegeben werden, und weiter das 3.Dropdownmenü gem. Vorgabe aus dem 2.Dropdownmenü;
2.) Kann ich diese Dropdownkette mit dem Inhaltssteuerelement für wiederholte Abschnitte duplizierbar machen, natürlich mit anderen Ergebnissen aufgrund der Dropdownauswahl;
3.) Ist es möglich mit Hilfe der Dropdownauswahl auch verschiedene Textblöcke mit integrierten Steuerelemente zu duplizieren?
Ich bin leider nicht sehr gut in VBA, habs aber versucht mit folgende Code der nicht funktioniert hat:
Const SOURCE_CC As String = "AAAA" ' Titel des 1. DropDowns
Const DEPENDENCY_CC As String = "BBBB" ' Titel des 2. DropDowns, dessen Einträge von der Auswahl des 1.Dropdown abhängig
Const DEPENDENCY_CCC As String = "CCCC" ' von der Auswahl des 1. DropDowns abhängig sind
' stellt die Auflistung der abhängigen Einträge im 2. DropDown bereit
' Key: Eintrag im 1. DropDown
' Item: Liste der von Key abhängigen Einträge
Dim dependentEntries As New Collection

Private Sub initDependentEntries()
If dependentEntries.Count = 0 Then
dependentEntries.Add Key:="AAAA", Item:=Array("1AA", "2AA", "3AA")
dependentEntries.Add Key:="BBBB", Item:=Array("1BB", "2BB", "3BB", "4BB")
dependentEntries.Add Key:="CCCC", Item:=Array("1CC", "2CC", "3CC", "4CC")
End If
End Sub

' erneuert beim Verlassen des 1. DropDowns die Einträge des 2. DropDown
' in Abhängigkeit des im 1. DropDown gewählten Eintrags und zeigt den 1. Eintrag an

Private Sub Document_ContentControlOnExit(ByVal ContentControl As ContentControl, Cancel As  _
Boolean)
' wenn 1. DropDown ("Brot") verlassen wird...
If ContentControl.Tag = SOURCE_CC Then
' gewählten Eintrag aus 1. DropDown holen
Dim selectedEntry As String: selectedEntry = ContentControl.Range.Text
' 2. DropDown ("Belag") ermitteln, um es bearbeiten zu können
Dim cc As ContentControl: Set cc = getCCbyTitle(DEPENDENCY_CC)
Dim ccc As ContentControl: Set ccc = getCCbyTitle(DEPENDENCY_CCC)
If Not cc Is Nothing Then
With ccc
' bisherige Einträge entfernen
.DropdownListEntries.Clear
' ggf. Einträge erstellen
initDependentEntries
' Einträge gem. Auswahl im 1. DropDown in 2. DropDown erstellen
Dim entry
For Each entry In dependentEntries(selectedEntry)
.DropdownListEntries.Add entry
Next
' 1. Eintrag vorselektieren
.DropdownListEntries(1).Select
End With
End If
End If
End Sub

' da ContentControls eigentlich nur über einen Index angesprochen werden können,
' ermittelt diese Hilfsfunktion ein ContentControl anhand seines Titels

Private Function getCCbyTitle(ccTitle As String) As ContentControl
' falls es ein ContentControl mit dem Titel nicht gibt, wird 'Nothing' zurückgegeben
Set getCCbyTitle = Nothing
' in allen ContentControls nach dem ContentControl mit dem angegebenen Titel suchen
Dim cc As ContentControl
For Each cc In ContentControls
If cc.Title = ccTitle Then Set getCCbyTitle = cc
Next
End Function

Bin für hilfe wirklich sehr dankbar, mfg Gerald
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Von einander abhängige Dropdown Menüs in
17.11.2020 16:25:57
Yal
Hallo Kratz,
eigentlich eine Word-Frage. Hier wird nur Excel gesprochen ;-)
Ich gehe davon aus, dass Du Dich innerhalb eines UserForm bewegst. Ich habe darin 2 ComboBox die zweite ist vom ersten abhängig.
Private Sub UserForm_Activate()
Dim E
Do While ComboBox1.ListCount > 0: ComboBox1.RemoveItem 0: Loop
For Each E In Array("AAAA", "BBBB", "CCCC"): ComboBox1.AddItem E: Next
End Sub
Private Sub ComboBox1_Change()
Dim E
ComboBox2.Text = ""
Do While ComboBox2.ListCount > 0: ComboBox2.RemoveItem 0: Loop
Select Case ComboBox1.Text
Case "AAAA"
For Each E In Array("AA1", "AA2", "AA3"): ComboBox2.AddItem E: Next
Case "BBBB"
For Each E In Array("BB1", "BB2", "BB3"): ComboBox2.AddItem E: Next
Case "CCCC"
For Each E In Array("CC1", "CC2", "CC3"): ComboBox2.AddItem E: Next
End Select
End Sub
Viel Erfolg
Yal
Anzeige
;

Forumthreads zu verwandten Themen

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-Menüs in Excel und Word


Schritt-für-Schritt-Anleitung

Um abhängige Dropdown-Menüs in Excel zu erstellen, folge diesen Schritten:

  1. Daten vorbereiten:

    • Erstelle eine Tabelle mit deinen Hauptkategorien und den abhängigen Werten.
    • Beispiel:
      Kategorie   | Unterkategorie
      ------------|----------------
      Obst        | Apfel
      Obst        | Banane
      Gemüse      | Karotte
      Gemüse      | Brokkoli
  2. Namensbereiche erstellen:

    • Markiere die Unterkategorien für jede Hauptkategorie und vergebe einen Namen, der der Hauptkategorie entspricht (z.B. „Obst“ für die Obst-Unterkategorien).
  3. Erstes Dropdown-Menü erstellen:

    • Wähle die Zelle aus, in der das erste Dropdown-Menü erscheinen soll.
    • Gehe zu „Daten“ -> „Datenüberprüfung“ -> „Datenüberprüfung“.
    • Wähle „Liste“ und gib die Hauptkategorien ein.
  4. Zweites Dropdown-Menü erstellen:

    • Wähle die Zelle für das zweite Dropdown-Menü aus.
    • Gehe erneut zu „Datenüberprüfung“.
    • Verwende die Formel =INDIREKT(A1) (ersetze A1 durch die Zelle des ersten Dropdowns), um die abhängige Auswahl zu ermöglichen.

Häufige Fehler und Lösungen

  • Kein Eintrag im zweiten Dropdown:

    • Überprüfe, ob der Namensbereich korrekt erstellt wurde und die Schreibweise übereinstimmt.
  • Dropdown zeigt #NAME? Fehler:

    • Stelle sicher, dass die Formel INDIREKT() korrekt eingegeben wurde und die Zelle des ersten Dropdowns richtig referenziert ist.

Alternative Methoden

Eine alternative Methode für das Erstellen von abhängigen Dropdown-Listen ist die Nutzung von VBA. Hier ein einfaches Beispiel für die Implementierung in Excel:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then ' Zelle des ersten Dropdowns
        Select Case Target.Value
            Case "Obst"
                Range("B1").Validation.Delete
                Range("B1").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                xlBetween, Formula1:="Apfel,Banane"
            Case "Gemüse"
                Range("B1").Validation.Delete
                Range("B1").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
                xlBetween, Formula1:="Karotte,Brokkoli"
        End Select
    End If
End Sub

Praktische Beispiele

Beispiel 1: Excel-Dropdown abhängig von Auswahl

  • Erstelle ein Dropdown-Menü für „Obst“ und „Gemüse“.
  • Je nach Auswahl sollen die entsprechenden Früchte oder Gemüse im zweiten Dropdown erscheinen.

Beispiel 2: Word-Dropdown erstellen

  • Um ein Dropdown-Feld in Word zu erstellen, gehe zu „Entwicklertools“ und wähle „Dropdown-Liste“.
  • Füge die gewünschten Einträge hinzu und nutze VBA, um die Auswahl abhängig zu machen.

Tipps für Profis

  • Nutze benannte Bereiche effektiv, um deine Dropdown-Listen dynamisch zu halten.
  • Implementiere Datenüberprüfung für die Eingabefelder, um falsche Eingaben zu vermeiden.
  • Experimentiere mit verschachtelten Dropdown-Listen, um komplexe Auswahlprozesse zu ermöglichen.

FAQ: Häufige Fragen

1. Wie erstelle ich ein Dropdown-Menü in Word? Um ein Dropdown-Menü in Word zu erstellen, gehe zu „Entwicklertools“, wähle „Inhaltssteuerelemente“ und dann das Dropdown-Menü.

2. Kann ich mehrere abhängige Dropdown-Listen in einem Formular erstellen? Ja, du kannst mehrere abhängige Dropdown-Listen erstellen, indem du denselben Prozess für jede Liste wiederholst und die VBA-Logik entsprechend anpasst.

3. Was sind Inhaltssteuerelemente für wiederholte Abschnitte in Word? Inhaltssteuerelemente ermöglichen es, Abschnitte zu duplizieren, die auf Dropdown-Auswahlen basieren. Du kannst sie in Kombination mit VBA verwenden, um dynamische Formulare zu erstellen.

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