Hallo,
kommt auch darauf an, von wievielen Datensätzen wir hier sprechen.
So wie ich das sehe, hast du in Spalte A den jeweiligen Hersteller und in Spalte B die verschiedenen Prokukte des entsprechenden Herstellers.
Sprich in A2 steht dein erster Herstelle und in B2 das erste Prokukt dieses Herstellers.
Alle folgenden Zeilen dieses Herstellers sind leer und in Spalte B (B3 bis B??) stehen die weiteren Produkte.
Anschließend dann das gleiche Spiel mit dem nächsten Hersteller.
Also z.B.:
A2 Hersteller A
B2 bis B5 die Produkte dieses Herstellers
A6 Hersteller B
B6 bis B10 die Produkte dieses Herstellers
A10 Hersteller C
ab B10 die Produkte dieses Herstellers
Ginge z.B. so:
Option Explicit
Private Sub ComboBox1_Change()
Dim raFund As Range, i As Long
With Worksheets("Tabelle2")
If Me.ComboBox1.ListIndex > -1 Then
Me.TextBox1 = ""
Me.TextBox2 = ""
Me.TextBox3 = ""
Set raFund = .Columns("A").Find(what:=Me.ComboBox1, LookIn:=xlValues, lookat:=xlWhole)
If Not raFund Is Nothing Then
Me.ComboBox2.Clear
Me.ComboBox2.AddItem raFund.Offset(, 1)
For i = raFund.Offset(1).Row To .Cells(.Rows.Count, "B").End(xlUp).Row
If .Cells(i, "A") = "" And .Cells(i, "B") <> "" Then
Me.ComboBox2.AddItem .Cells(i, "B")
Else
Exit For
End If
Next i
End If
Else
Me.ComboBox2.Clear
End If
End With
Set raFund = Nothing
End Sub
Private Sub ComboBox2_Change()
Dim raFund As Range
With Worksheets("Tabelle2")
If Me.ComboBox2.ListIndex > -1 Then
Set raFund = .Columns("B").Find(what:=Me.ComboBox2, LookIn:=xlValues, lookat:=xlWhole)
If Not raFund Is Nothing Then
Me.TextBox1 = raFund.Offset(, 1)
Me.TextBox2 = raFund.Offset(, 2)
Me.TextBox3 = raFund.Offset(, 3)
End If
End If
End With
Set raFund = Nothing
End Sub
Private Sub UserForm_Initialize()
Dim i As Long
With Worksheets("Tabelle2")
For i = 2 To .Cells(.Rows.Count, "A").End(xlUp).Row
If .Cells(i, "A") <> "" Then Me.ComboBox1.AddItem .Cells(i, "A")
Next i
End With
End Sub
Gruß Werner
|