Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1452to1456
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
Inhaltsverzeichnis

ListBox durch abhängige Kombinationsboxen füllen

ListBox durch abhängige Kombinationsboxen füllen
27.10.2015 23:09:23
Markus
Liebes Forum,
ich habe folgendes Anliegen.
Ich will mir für meine Tabelle einen Filter erstellen, welcher mir immer die jeweiligen Mitarbeiter mit dem gewünschten Kenntnisstand anzeigt.
Leider habe ich in keinem Forum eine Antwort auf mein Anliegen gefunden, aber erste Programm-Codes (z.B. j-hennekes.de) bereits eingebaut.
Bis Private Sub CombBox3_Enter() konnte ich mich einigermaßen durchkämpfen, danach brauche ich bitte eure Unterstützung.Ich habe mal meinen Versuch hochgeladen.
Bsp: Ich wähle als Land Deutschland aus, danach Produkt 1 und Kenntnisstand gut
Anschließend sollten dann die Namen Hans und Peter in der Liste erscheinen.
Bsp: Ich wähle als Land die Schweiz, danach Produkt 3 und den Kenntnisstand schlecht
Anschließend sollte der Name Horst in der LisBox erscheinen.
https://www.herber.de/bbs/user/101084.xlsm
Vielen Dank.

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ListBox durch abhängige Kombinationsboxen füllen
27.10.2015 23:13:39
Markus
Hier noch der Code:
Option Explicit
Const C_mstrDatenblatt As String = "Tabelle1"
Dim mobjDic As Object
Dim mlngLast As Long
Dim Spalte As Integer
Dim ZeileMax As Long
Dim Zeile As Long
Dim Treffer As Range
Dim mlngZ As Long
Private Sub ComboBox1_Enter()
Set mobjDic = CreateObject("Scripting.Dictionary")
For mlngZ = 2 To mlngLast
mobjDic(Worksheets(C_mstrDatenblatt).Cells(mlngZ, 1).Value) = 0
Next
Me.ComboBox1.List = mobjDic.keys
Set mobjDic = Nothing
End Sub

Private Sub ComboBox2_Enter()
Set mobjDic = CreateObject("Scripting.Dictionary")
With Worksheets(C_mstrDatenblatt)
For mlngZ = 2 To mlngLast
Next
End With
Me.ComboBox2.Column = Range("C1:E1").Value
End Sub

Private Sub ComboBox3_Enter()
'Ab hier weiß ich nicht weiter
'in der ComboBox_3 sollen die 3 Auswahlmöglichkeiten: "Schlecht, Mittel, Gut" stehen
Me.ComboBox3.Clear
With Worksheets(C_mstrDatenblatt)
Set Treffer = .Rows(1).Find(what:=Me.ComboBox2.Value, lookat:=xlWhole)
If Not Treffer Is Nothing Then
Spalte = Treffer.Column
ZeileMax = .Cells(.Rows.Count, Spalte).Ende(xlUp).Row
For Zeile = 2 To ZeileMax
Me.ComboBox3.AddItem .Cells(Zeile, Spalte).Value
Next Zeile
Me.ComboBox3.ListIndex = 0
End If
End With
End Sub
Private Sub ComboBox3_Change()
'Die ListBox soll sich anhand der in ComboBox_3 getroffenen Wahl mit den jewiligen Namen füllen
With ListBox1.RowSource = "Tabelle1!B2:B5"
End With
End Sub

Private Sub CommandButton1_Click()
Unload Me
End Sub

Private Sub UserForm_Initialize()
mlngLast = Worksheets(C_mstrDatenblatt).Cells(Rows.Count, 1).End(xlUp).Row
End Sub

Anzeige
AW: ListBox durch abhängige Kombinationsboxen füllen
28.10.2015 08:17:35
Beverly
Hi Markus,
Private Sub ComboBox3_change()
Dim strStart As String
Set Treffer = Columns(1).Find(ComboBox1.Value, lookat:=xlWhole)
If Not Treffer Is Nothing Then
strStart = Treffer.Address
Do
ListBox1.AddItem Cells(Treffer.Row, 2)
Set Treffer = Columns(1).FindNext(Treffer)
Loop While Not Treffer Is Nothing And Treffer.Address  strStart
End If
Set Treffer = Nothing
End Sub



AW: ListBox durch abhängige Kombinationsboxen füllen
28.10.2015 16:13:23
Markus
Hallo Beverly, liebes Forum,
vielen Dank für deine schnelle Hilfe.
Mein Problem ist jetzt die Private Sub ComboBox_3 Enter( ) : Wie kann ich mir da, nur die Kenntnisstände des in ComboBox 2 gewählten Produkts anzeigen lassen (ohne Duplikate)?
Dein Code funktioniert prima, aber er zeigt mir leider alle Mitarbeiter des gewählten Landes an ... unabhängig vom zuvor gewählten Kenntnisstand. Wie kann man da eine Abhängigkeit herstellen?

Anzeige
AW: ListBox durch abhängige Kombinationsboxen füllen
28.10.2015 19:40:20
Beverly
Hi Markus,
im Anhang einmal das was ich aus deinem Beitrag interpretiert hätte.
Aber: wäre es nicht besser, anstatt in die Combobox3 die Prädikate (ohne Duplikate) generell für das ausgewählte Produkt einzulesen nur die (ohne Duplikate) einzulesen, die zum Produkt aus ComboBox2 UND dem ausgewählten Land aus ComboBox1 gehören?
https://www.herber.de/bbs/user/101106.xlsm


AW: ListBox durch abhängige Kombinationsboxen füllen
28.10.2015 22:33:27
Markus
Hallo Beverly,
vielen Dank, genau so habe ich es mir vorgestellt :)
Noch eine Idee ist mir gekommen: wenn ich meine Auswahl (steht in ListBox) in Tabelle 2 kopieren will
Private Sub CommandButton2_Click( )
With Worksheets (Tabelle2)
.cells(.cells(Rows.Count, 1).End(xlUp).Row+1, 1).Value = Me.ComboBox1.Value
.cells(.cells(Rows.Count, 2).End(xlUp).Row+1, 2).Value = Me.ComboBox2.Value
.cells(.cells(Rows.Count, 3).End(xlUp).Row+1, 3).Value = Me.ComboBox3.Value
End With
Sheets("Tabelle2"). Range("D2").Resize(ListBox1.ListCount, ListBox1.ColumnCount).Value =  _
ListBox1.List
' Wie kann ich hier einstellen, dass die Namen in der ListBox1 immer nach dem letzten  _
vorhergehenden Wert in die Spalte D in Tabelle 2 eingetragen werden?
End Sub
Danke

Anzeige
AW: ListBox durch abhängige Kombinationsboxen füllen
29.10.2015 07:38:02
Beverly
Hi Markus,
Private Sub CommandButton2_Click()
Dim lngErste As Long
With Worksheets("Tabelle2")
lngErste = .Cells(Rows.Count, 4).End(xlUp).Row + 1
.Cells(lngErste, 1).Value = Me.ComboBox1.Value
.Cells(lngErste, 2).Value = Me.ComboBox2.Value
.Cells(lngErste, 3).Value = Me.ComboBox3.Value
.Cells(lngErste, 4).Resize(ListBox1.ListCount, _
ListBox1.ColumnCount).Value = ListBox1.List
End With
End Sub



AW: ListBox durch abhängige Kombinationsboxen füllen
29.10.2015 22:01:42
Markus
Hallo Beverly,
überragend!! Herzlichen Dank nochmal. :)

20 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige