Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1792to1796
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
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

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

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige