Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
mehrere Comboboxen abhängig von einander
einander
Hallo,
ich habe eine Userform, welche 5 Comboboxen enhält (zur Filterung der Anzeige von Daten in einer Listbox). Jede Combobox führt die Inhalte eine Spalte aus dem Datenblatt - ohne Dopplungen.
Jetzt würde ich es gern so einrichten, dass wenn ein Wert in einer der Comboxen ausgewählt wird, alle anderen nur noch die passenden Einträge (ohne Dopplungen) enthalten.
Ich habe es für eine Combobox so gelöst:
Private Sub CBJahr_Change()
Set objDic = CreateObject("Scripting.Dictionary")
CBMonat.Clear
With Sheets("Daten")
Set Bereich = .Range(.Range("Y2"), .Range("Y2").End(xlDown)) 'relevanten Bereich festlegen ( _
Jahres_Spalte)
End With
For Each Zelle In Bereich
If Zelle.Value = CBJahr.Text Then
objDic(Zelle.Offset(0, -1).Value) = 0 'Unikate zuweisen
End If
Next
CBMonat.List = objDic.keys ' Liste der Combobox zuweisen
ListBoxAktualisieren ' Listbox mit aktuellen Daten anzeigen (Gemäß der Einträge derComboboxen)
End Sub
Wie kann ich es für alle 5 Comboboxen lösen, dass die entsprechenden Einträge angezeigt werden - OHNE Dopplungen !!!
Problem für mich, wo ich Eure Hilfe brauche:
* Wie kann ich es für 5 Combobox-Werte realisieren, welche ja nicht alle "gefüllt" seien müssen ?
Hinweis zu den Daten:
Die Datentabelle enthälöt 46 Spalten. Alle Comboboxen richten sich an eine der jeweiligen Spalten und führt diese "ohne Dopplungen" auf. Bsp. Viele Datensätze können aus einem Jahr stammen, aber in der Combobox soll/wird eben nur einmal dieses Jahr angezeigt.
Hoffe Ihr könnt verstehen, was ich vorhabe und habt vielleicht einen Ansatz für mich ?!?
Gruß und Danke
Kay
* In den Daten (Tabelle der Datensätze)

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

Betreff
Benutzer
Anzeige
AW: habe es jetzt so gelöst...
15.03.2011 19:27:25
KLE
Hi, ... die Beispiele habe ich z.T. gefunden, halfen mir aber nicht wirklich. Denn diese waren i.d.R. so aufgebaut, dass stets eine Reihenfolge definiert war. Erst Combobox 1, dann 2 usw.
Bei mir sollten Sie ja unabhänigig von einander laufen!!!
Habe es jetzt so gelöst, dass ich für jedes Feld den u.g. Code verwende (angepasst auf das jeweilige Feld und Spalte in der Datentabelle) und ihn bei allen Comboboxen aufrufe. Das funktioniert jetzt super...
Gern bin ich für "Optimierungen" oder Anregungen weiterhin offen...
Danke und Gruß
Kay
Private Sub Jahr_aktuell()
Dim a As Integer
a = 0
Set objDic = CreateObject("Scripting.Dictionary")
With Sheets("Daten")
Set Bereich = .Range(.Range("Y2"), .Range("Y2").End(xlDown)) 'relevanten Bereich ermitteln
End With
For Each Zelle In Bereich
Debug.Print Zelle(1, -21).Value & " /// " & Zelle(1, 0).Value
If InStr(LCase(Zelle(1, -21).Value), LCase(TBSuche.Text)) > 0 Then ' Suchtext
If InStr(LCase(Zelle(1, -21).Value), LCase(CBZahlart.Text)) > 0 Then ' Zahlart
If InStr(LCase(Zelle(1, 0).Value), LCase(CBMonat.Text)) > 0 Then ' Monat
If InStr(LCase(Zelle(1, -21).Value), LCase(CBFRsteller.Text)) > 0 Then ' Rsteller
objDic(Zelle.Value) = 0 'Nur Unikate sammeln
End If
End If
End If
End If
Next
CBJahr.List = objDic.keys 'Unikate der ComboBox zuweisen
Ende:
End Sub

Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige