Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1496to1500
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
Zwei voneinander abhängige ComboBoxen
01.06.2016 11:57:40
Johannes
Hallo Miteinander,
im Folgenden zeige ich euch meinen Code, der zwei ComboBoxen voneinander abhängig befüllt:
Das ganze geschieht auf einer Userform.
Folgendes Szenario: Man hat mehrere sog. Hauptprojekte mit dazugehörigen Nebenprojekten, die man von einander abhängig auswählen möchte, um diese in ein separates Tabellenblatt einzutragen. (Um beispielsweise Bearbeitungsvorgänge o.ä. festzuhalten).
Nice to have: Die ComboBoxen sind dynamisch! :)
Hierzu habe ich ein Bild: Die orange hinterlegten Zellen seien die Hauptprojekte, die darunterliegenden sind die Nebenprojekte.
Userbild
Beim Starten der Userform befülle ich zunächst die ComboBoxHauptprojekte mit den Überschriften. Dazu lese ich die Anzahl der Überschriften aus, lese die Überschrift ein und übertrage sie in die ComboBox als Dropdown.
In einer separaten Prozedur, bei eine Veränderung in ComboBoxHauptprojekte stattfindet, befülle ich davon abhängig die ComboboxNebenprojekte.
Vergleiche dazu das Hauptprojekt und lese dann die darunterstehenden Nebenprojekte ein und füge sie der ComboboxNebenprojekte als Dropdown zu.
Einfach mal in die Syntax einlesen: Ist meiner Meinung nach der einfachste übersichtlichste Weg.
-------------Code beginnt hier------------
Private Sub UserForm_Initialize()
Dim lngRechtesterEintrag As Long
Dim i As Integer
'Hauptprojekt
lngRechtesterEintrag =Sheets("Tabelle2").Cells(1,Columns.Count).End(xlToLeft).Column
With Me.ComboBoxHauptprojekt
For i = 1 To lngRechtesterEintrag
Eintrag = Sheets("Tabelle2").Cells(1, i).Value
.AddItem CStr(Eintrag)
Next
End With
End Sub

Private Sub ComboBoxHauptprojekt_Change()
ComboBoxNebenprojekt.Clear
lngRechtesterEintrag = Sheets("Tabelle2").Cells(1, Columns.Count).End(xlToLeft).Column
If ComboBoxHauptprojekt.ListIndex = -1 Then Exit Sub
For i = 1 To lngRechtesterEintrag
Eintrag = Sheets("Tabelle2").Cells(1, i).Value
If ComboBoxHauptprojekt = Eintrag Then
ZeileMax = Sheets("Tabelle2").Cells(Rows.Count, i).End(xlUp).Row
For n = 2 To ZeileMax
nebenprojekt = Sheets("Tabelle2").Cells(n, i)
ComboBoxNebenprojekt.AddItem CStr(nebenprojekt)
Next
End If
Next
End Sub

-------------------------Code endet hier--------------------------
Im Bild
Userbild
Ich hoffe ich konnte helfen :)
Grüße

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zwei voneinander abhängige ComboBoxen
01.06.2016 13:02:01
Rudi
Hallo,
das geht viel einfacher ohne Schleifen.
Private Sub UserForm_Initialize()
'Hauptprojekt
With Sheets("Tabelle2")
Me.ComboBoxHauptprojekt.List = .Range(.Cells(1, 1), .Cells(1, Columns.Count).End(xlToLeft)). _
Value
End With
End Sub
Private Sub ComboBoxHauptprojekt_Change()
Dim lngColumn As Long
ComboBoxNebenprojekt.Clear
If ComboBoxHauptprojekt.ListIndex > -1 Then
With Sheets("Tabelle2")
lngColumn = Application.Match(ComboBoxHauptprojekt, .Rows(1), 0)
ComboBoxNebenprojekt.List = .Range(.Cells(2, lngColumn), .Cells(Rows.Count, lngColumn). _
End(xlUp)).Value
End With
End If
End Sub

Gruß
Rudi

Anzeige
AW: Zwei voneinander abhängige ComboBoxen
01.06.2016 13:10:14
Johannes
Hi Rudi,
Tatsache! Etwas Schreibarbeit gespart!
Merci für die Rückmeldung!
Grüße
Johannes

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige