PDA

Vollständige Version anzeigen : ComboBox2 in Abhängigkeit von ComboBox1 füllen


dannypronsato
06.07.2015, 15:17
Hallo liebe Community,

ich habe folgendes Problem:

Ich habe eine Userform gebastelt. Dort habe ich 2 ComboBoxen integriert. ComboBox 1 zieht sich die Werte aus Tabelle 1. Tabelle 1 hat 2 Spalten. Dort sind einmal die Kostenstellen als Zahl in Spalte B, als auch die genaue Bezeichnung der Kostenstelle in Spalte A hinterlegt.
ComboBox 1 zieht sich die Bezeichnung aus Spalte A. Die zugehörige "Zahl" lasse ich in TextBox1 anzeigen.

Nun gibt es eine zweite Tabelle, Tabelle2, wo Mitarbeiter (Spalte A) mit zugehöriger Kostenstelle (Spalte B) hinterlegt sind. Die Kostenstelle wird hier allerdings nur als Zahl hinterlegt.

ComboBox2 soll alle Mitarbeiter unter der ausgewählten Kostenstelle zur Auswahl stellen.

z.B. ComboBox1: Wareneingang (ausgewählt)
TextBox1: 1234 (Kostenstelle)

ComboBox2: Meier
Müller
Schulze

Selbstverständlich können die Werte aus Tabelle2 dynamisch sein, da sich der Mitarbeiterstamm ab und zu ändert.

Ich hoffe, ich konnte mich verständlich ausdrücken.

Über jegliche Hilfe bin ich sehr dankbar!

Beste Grüße

pefeu
06.07.2015, 20:28
Hallo ....

es wäre schön, wenn du deine Datei hier hochladen würdest, denn sonst müsste sich jemand erstmal hinsetzen und das, was du ja schon vorliegen hast neu erfinden. Das würde sicherlich auch anders aussehen als bei dir im Original.

Dann könnte man z. B. auch sehen, ob es doppelte Kostenstellenbezeichnungen gibt und ob diese in der ComboBox nur einmal auftauchen sollen.

Erwarte also keine Doppelarbeit von einem Helfer, sondern zeige, was du bereits vorliegen hast.

Gruß Peter

dannypronsato
07.07.2015, 08:29
Hallo Peter,

ich habe die Datei stark vereinfacht angehangen. Ich hoffe so wird es deutlich. Vielen Dank schonmal für die schnelle Antwort!

Beste Grüße

pefeu
07.07.2015, 11:59
Hallo ....-

versuche es so:
Private Sub ComboBox1_Change()

If ComboBox1.ListIndex <> "" Then
TextBox1.Value = Worksheets("Tabelle1").Cells(2 + ComboBox1.ListIndex, 2).Value
ComboBox2.Clear
With ThisWorkbook.Worksheets("Tabelle2")
For lzeile = 2 To .Cells(.Rows.Count, 2).End(xlUp).Row
If Trim$(TextBox1.Value) = Trim$(.Range("B" & lzeile).Value) Then
ComboBox2.AddItem .Range("A" & lzeile).Value
End If
Next lzeile
End With
End If

End Sub
Gruß Peter

dannypronsato
08.07.2015, 10:53
Hi,

funktioniert genau so, wie ich es haben wollte. Vielen Dank!

Beste Grüße

HS(V)
08.07.2015, 21:59
Hallo,

Einen etwas anderen Ansatz trotz gelöst.

Lesen aus der Speicher ist schneller (Spielt hier keine Rolle mit so wenig Daten).
Kein 'Clear' von Combobox2.
Die Füllung Combobox2 geht auf einmal schneller als 'Add'.
Die Textbox wird durch Combobox1 Liste Indexspalte 1 gefüllt.


Private Sub UserForm_Initialize()
ComboBox1.List = Tabelle1.Cells(1).CurrentRegion.SpecialCells(2).Offset(1).SpecialCells(2).Value
End Sub

Private Sub ComboBox1_Change()
TextBox1 = ComboBox1.List(ComboBox1.ListIndex, 1)
With CreateObject("scripting.dictionary")
sn = Tabelle2.Cells(1).CurrentRegion
For i = 2 To UBound(sn)
If sn(i, 2) = CLng(TextBox1) Then .Item(sn(i, 1)) = sn(i, 1)
Next i
ComboBox2.List = .keys
End With
End Sub