Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1492to1496
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
Listbox aus Comboboxen
25.05.2016 11:57:37
Sascha
Hallo zusammen,
ich habe in meiner Datei eine UserForm erstellt mit mehreren Comboboxen.
Funktioniert soweit so wie ich es mir vorstelle. Die CBs werden aus einer Tabelle gefüllt, ohne Duplikate.
Jetzt möchte ich noch, dass wenn ich in den Comboboxen bestimmte Werte auswähle das Ergebnis daraus dann in einer ListBox ausgegeben wird.
Zur Zeit sind es 8 CBs
Nachfolgend mein Code, der wahrscheinlich alles andere als schön ist, aber funktioniert :)

Private Sub UserForm_Initialize()
Dim objDic1, objDic2, objDic3, objDic4, objDic5, objDic6, objDic7, objDic8 As Object
Dim Format As Long
Dim Seiten As Long
Dim DruckA As Long
Dim DruckB As Long
Dim Papiergewicht As Long
Dim Material As Long
Dim Verarbeitung As Long
Dim Auflage As Long
Dim Auswahl As Long
With Sheets("2SDINA4")
Format = Range("A65536").End(xlUp).Row
Seiten = Range("B65536").End(xlUp).Row
DruckA = Range("C65536").End(xlUp).Row
DruckB = Range("D65536").End(xlUp).Row
Papiergewicht = Range("E65536").End(xlUp).Row
Material = Range("F65536").End(xlUp).Row
Verarbeitung = Range("G65536").End(xlUp).Row
Auflage = Range("H65536").End(xlUp).Row
Auswahl = Range("I65536").End(xlUp).Row
End With
Set objDic1 = CreateObject("Scripting.Dictionary")
Set objDic2 = CreateObject("Scripting.Dictionary")
Set objDic3 = CreateObject("Scripting.Dictionary")
Set objDic4 = CreateObject("Scripting.Dictionary")
Set objDic5 = CreateObject("Scripting.Dictionary")
Set objDic6 = CreateObject("Scripting.Dictionary")
Set objDic7 = CreateObject("Scripting.Dictionary")
Set objDic8 = CreateObject("Scripting.Dictionary")
For Format = 2 To Cells(Rows.Count, 1).End(xlUp).Row
objDic1(Cells(Format, 1).Value) = 0
Next
Me.CB1.List = objDic1.keys
For Seiten = 2 To Cells(Rows.Count, 1).End(xlUp).Row
objDic2(Cells(Seiten, 2).Value) = 0
Next
Me.CB2.List = objDic2.keys
For DruckA = 2 To Cells(Rows.Count, 1).End(xlUp).Row
objDic3(Cells(DruckA, 3).Value) = 0
Next
Me.CB3.List = objDic3.keys
For DruckB = 2 To Cells(Rows.Count, 1).End(xlUp).Row
objDic4(Cells(DruckB, 4).Value) = 0
Next
Me.CB4.List = objDic4.keys
For Papiergewicht = 2 To Cells(Rows.Count, 1).End(xlUp).Row
objDic5(Cells(Papiergewicht, 5).Value) = 0
Next
Me.CB5.List = objDic5.keys
For Material = 2 To Cells(Rows.Count, 1).End(xlUp).Row
objDic6(Cells(Material, 6).Value) = 0
Next
Me.CB6.List = objDic6.keys
For Verarbeitung = 2 To Cells(Rows.Count, 1).End(xlUp).Row
objDic7(Cells(Verarbeitung, 7).Value) = 0
Next
Me.CB7.List = objDic7.keys
For Auflage = 2 To Cells(Rows.Count, 1).End(xlUp).Row
objDic8(Cells(Auflage, 8).Value) = 0
Next
Me.CB8.List = objDic8.keys
End Sub

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox aus Comboboxen
25.05.2016 12:05:05
Sascha
Hallo nochmal,
ich habe vergessen zu erwähnen, dass das Ergebnis in Spalte I steht.
Die Daten für die Comboboxen sind jeweils in Spalte A-H.

AW: Listbox aus Comboboxen
25.05.2016 12:35:49
Rudi
Hallo,
der ist nicht nur alles andere als schön, sondern tw. auch überflüssig.
Private Sub UserForm_Initialize()
Dim objDic(1 To 8) As Object
Dim lRow As Long, i As Integer
For i = 1 To 8
Set objDic(i) = CreateObject("Scripting.Dictionary")
Next
For lRow = 2 To Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To 8
objDic(i)(Cells(lRow, i).Value) = 0
Next
Next lRow
For i = 1 To 8
Controls("CB" & i).List = objDic(i).keys
Next i
End Sub
Was willst du genau? Lade eine Beispielmappe hoch.
Gruß
Rudi

Anzeige
AW: Listbox aus Comboboxen
25.05.2016 13:01:21
Sascha
Hallo,
ich habe ja angegeben VBA = nein ^^
Hatte mir schon gedacht das es weitaus einfacher geht aber das war für mich leider noch etwas zu hoch.
Vielen Dank schon mal für die Anpassung. Hab es schon umgesetzt und angepasst (Sheets(....)
Beispieldatei:
https://www.herber.de/bbs/user/105792.xlsm

AW: Listbox aus Comboboxen
25.05.2016 13:01:25
Sascha
Hallo,
ich habe ja angegeben VBA = nein ^^
Hatte mir schon gedacht das es weitaus einfacher geht aber das war für mich leider noch etwas zu hoch.
Vielen Dank schon mal für die Anpassung. Hab es schon umgesetzt und angepasst (Sheets(....)
Beispieldatei:
https://www.herber.de/bbs/user/105792.xlsm

Anzeige
jetzt weiß ich noch immer nicht, ...
25.05.2016 13:08:48
Rudi
... was du willst.
Deine Anpassung korrekterweise besser so:
  With Sheets("2sdina4")
For lRow = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To 8
objDic(i)(.Cells(lRow, i).Value) = 0
Next
Next lRow
End With
Sonst werden zwar die Zeilen in 2sdina4 gezählt, die Daten kommen aber aus dem gerade aktiven Blatt.
Gruß
Rudi

AW: jetzt weiß ich noch immer nicht, ...
25.05.2016 13:56:25
Sascha
Ok, danke für den Hinweis.
Ich möchte, wenn in den einzelnen Comboboxen Werte ausgewählt werden, das dann in der Listbox nur die Werte aus Spalte I auftauchen, die zu der aktuellen Filterung gehören.
Falls möglich auch ohne Duplikate.
Im Laufe der Zeit werden immer neue Daten in die Tabelle eingepflegt, so das in Spalte I auch andere Werte als 16R oder 8R vorkommen.
Anhand dieses Wertes wird im Anschluss mit einer Lieferantenliste abgeglichen, welcher Lieferant das entsprechende Modell (8R/16R/etc...) im Angebot hat.

Anzeige
Listbox filtern
25.05.2016 14:37:13
Rudi
Hallo,
für CB1...CB8 einfügen:
Private Sub CB1_Change()
ListBox1.List = fncListe()
End Sub
Im Modul der UF:
Private Function fncListe()
Dim i As Long, vMatch(1 To 8), sMatch As String, arrListe, objListe As Object
Const sDELIM As String = "|"
Set objListe = CreateObject("Scripting.Dictionary")
arrListe = Sheets("2sdina4").Cells(1, 1).CurrentRegion.Resize(, 9)
For i = 1 To 8
vMatch(i) = IIf(Controls("CB" & i).ListIndex > -1, Controls("CB" & i).Value, "*")
Next
sMatch = Join(vMatch, sDELIM)
sMatch = sMatch & sDELIM & "*"
For i = 2 To UBound(arrListe)
If Join(WorksheetFunction.Index(arrListe, i, 0), sDELIM) Like sMatch Then
objListe(arrListe(i, 9)) = 0
End If
Next
If objListe.Count > 0 Then
fncListe = objListe.keys
End If
End Function
Gruß
Rudi

Anzeige
AW: Listbox filtern
25.05.2016 15:15:19
Sascha
Hallo,
funktioniert soweit erst mal aber wenn ich eine der Comboboxen ändern will, sprich ich habe einen Wert im Dropdown angekliickt und will dann einen anderen kommt eine Fehlermeldung.
Laufzeitfehler 381
Eigenschaft List konnte nicht gesetzt werden. Index des Eigenschaftenfelds ungültig.
Habe ich wieder was falsch gemacht?

AW: Listbox filtern
25.05.2016 15:42:53
Rudi
dann wurde nichts gefunden.
Kleine Korrektur:
Private Function fncListe()
Dim i As Long, vMatch(1 To 8), sMatch As String, arrListe, objListe As Object
Const sDELIM As String = "|"
Set objListe = CreateObject("Scripting.Dictionary")
arrListe = Sheets("2sdina4").Cells(1, 1).CurrentRegion.Resize(, 9)
For i = 1 To 8
vMatch(i) = IIf(Controls("CB" & i).ListIndex > -1, Controls("CB" & i).Value, "*")
Next
sMatch = Join(vMatch, sDELIM)
sMatch = sMatch & sDELIM & "*"
For i = 2 To UBound(arrListe)
If Join(WorksheetFunction.Index(arrListe, i, 0), sDELIM) Like sMatch Then
objListe(arrListe(i, 9)) = 0
End If
Next
If objListe.Count > 0 Then
fncListe = objListe.keys
Else
fncListe = Array("")
End If
End Function

Gruß
Rudi

Anzeige
AW: Listbox filtern
25.05.2016 15:50:15
Sascha
VIELEN DANK!
Habe es getestet und jetzt scheint alles zu funktionieren :)
Ohne dich wäre ich im Leben nicht soweit gekommen.

AW: Listbox filtern
25.05.2016 15:50:15
Sascha
VIELEN DANK!
Habe es getestet und jetzt scheint alles zu funktionieren :)
Ohne dich wäre ich im Leben nicht soweit gekommen.

das Problem ist nur, ...
25.05.2016 16:13:27
Rudi
... dass wir dich jetzt auf Ewig an der Backe haben. Denn wahrscheinlich wirst du nichts von dem kapieren, was da passiert. ;-)
Gruß
Rudi

AW: das Problem ist nur, ...
25.05.2016 16:29:19
Sascha
Ich mache zur Zeit einen VBA-Kurs über die Firma, der leider nur Stundenweise stattfindet.
Ich habe die Hoffnung euch eines schönen Tages nicht mehr belästigen zu müssen ;)
Im groben verstehe ich was da passiert, mir fehlen nur noch die ganzen Datentypen/Begriffe usw... und wie ich diese kombinieren kann.
Ich war schon froh meinen Anfangscode hinbekommen zu haben, auch wenn da vieles unnötig war, wie du schon erwähnt hast.

Anzeige
AW: Listbox aus Comboboxen
25.05.2016 13:01:34
Sascha
Hallo,
ich habe ja angegeben VBA = nein ^^
Hatte mir schon gedacht das es weitaus einfacher geht aber das war für mich leider noch etwas zu hoch.
Vielen Dank schon mal für die Anpassung. Hab es schon umgesetzt und angepasst (Sheets(....)
Beispieldatei:
https://www.herber.de/bbs/user/105792.xlsm

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige