Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1512to1516
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

Fester Inhalt abhängiger ComboBoxen

Fester Inhalt abhängiger ComboBoxen
12.09.2016 22:27:28
Markus
Liebes Forum,
wie müsste man den Code anpassen, damit in der 3. Combobox (Kenntnisstand) , unabhängig vom jeweiligen Spalteninhalt, immer die 3 möglichen Kenntnisstände (schlecht - mittel - gut) erscheinen.
VBA-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 ComboBox2_change()
' Spaltennummer der Combo-Auswahl speichern
' dadurch kann ComboBox3 auf diese Spalte zugreifen
Dim rngSpalte As Range
With Worksheets(C_mstrDatenblatt)
Set rngSpalte = .Rows(1).Find(ComboBox2, lookat:=xlWhole)
ComboBox2.Tag = rngSpalte.Column
End With
End Sub
Private Sub ComboBox3_Enter()
Dim objDic As Object
Dim varBereich As Variant
Dim lngZaehler As Long
Dim arrDaten As Variant
Set objDic = CreateObject("Scripting.Dictionary")
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 = IIf(IsEmpty(.Cells(.Rows.Count, Spalte)), .Cells(.Rows.Count, Spalte). _
End(xlUp).Row, .Rows.Count)
varBereich = .Range(.Cells(2, Spalte), .Cells(ZeileMax, Spalte))
For lngZaehler = LBound(varBereich) To UBound(varBereich)
objDic(varBereich(lngZaehler, 1)) = 0    ' Eintrag wird nur übernommen wenn er   _
_
im DictionaryObject noch nicht enthalten ist
Next
arrDaten = objDic.keys
ComboBox3.List = arrDaten
Me.ComboBox3.ListIndex = 0
End If
End With
End Sub
Private Sub ComboBox3_change()
Dim strStart As String
Dim rngSpalte As Range
If ComboBox2  "" Then
ListBox1.Clear
Set Treffer = Columns(1).Find(ComboBox1.Value, lookat:=xlWhole)
If Not Treffer Is Nothing Then
strStart = Treffer.Address
Do
If Cells(Treffer.Row, 1) = ComboBox1 And Cells(Treffer.Row, CInt(ComboBox2.Tag)) _
_
= ComboBox3 Then
ListBox1.AddItem Cells(Treffer.Row, 2)
End If
Set Treffer = Columns(1).FindNext(Treffer)
Loop While Not Treffer Is Nothing And Treffer.Address  strStart
End If
Set Treffer = Nothing
Else
MsgBox "Bitte Produkt auswählen"
End If
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

Die Excel-Datei:
https://www.herber.de/bbs/user/108135.xlsm
Beispiel: Ich wähle das Land Deutschland aus - anschließend Produkt 3 - und dann in der ComboBox3 (Kenntnisstand) erscheinen dann immer "schlecht - mittel - gut". Auch wenn es zu Produkt 3 keinen Mitarbeiter gibt, welcher den Kenntnisstand "gut" besitzt. In der ListBox sollen weiterhin nur die Mitarbeiter erscheinen, welche die zuvor gewählten Bedinungen erfüllen. In unserem Beispiel mit "Produkt 3" und Kenntnisstand "gut" würde die ListBox leer bleiben.
An dieser Stelle nochmal Danke an "Beverly", die mir damals mit dem Code sehr geholfen hat.
Vielen Dank euch!

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

Betreff
Datum
Anwender
Anzeige
AW: Fester Inhalt abhängiger ComboBoxen
13.09.2016 11:24:45
ChrisL
Hi Markus
Ich denke du kannst ComboBox3_Enter löschen und Intitalize wie folgt ergänzen:
Private Sub UserForm_Initialize()
mlngLast = Worksheets(C_mstrDatenblatt).Cells(Rows.Count, 1).End(xlUp).Row
ComboBox3.AddItem "schlecht"
ComboBox3.AddItem "mittel"
ComboBox3.AddItem "gut"
End Sub

cu
Chris
AW: Fester Inhalt abhängiger ComboBoxen
13.09.2016 20:37:28
Markus
Hallo Chris,
Dankeschön - funktioniert!
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige