Hey =)
Sitze seit paar Tagen an einem Problem und komme nicht weiter. Habe bereits mehrere Lösungsansätze, die Google mir ausgespuckt hat, versucht...jedoch ohne Erfolg.
Ich habe in einem Userform viele Comboboxen. Der Inhalt der Comboboxen in der ersten Spalte werden über Userform_Inititalize() gefüllt, soweit kein Problem. Der Inhalt der Comboboxen in der zweiten Spalten ist jetzt allerdings abhängig vom Inhalt der ersteren. Folglich müsste ich jetzt für jede Combobox der ersten Spalte einen Change Code schreiben, was seeehr lang wird. Bisher sieht das alles so aus:
Private Sub UserForm_Initialize()
For Each ctr In UserForm1.Controls
If ctr.Name Like "CBSpalteA*" Then
With ctr
.AddItem "A"
.AddItem "B"
.AddItem "C"
.AddItem "D"
.AddItem "E"
.AddItem "F"
.AddItem "H"
End With
End If
Next ctr
End Sub
Private Sub CBSpalteA1_Change()
Dim index As Integer
index = CBSpalteA1.ListIndex
CBSpalteB1.Clear
Select Case index
Case Is = 0
With CBSpalteB1
.AddItem "AA"
End With
Case Is = 1
With CBSpalteB1
.AddItem "BB"
.AddItem "CC"
.AddItem "DD"
.AddItem "EE"
.AddItem "FF"
End With
Case Is = 2
With CBSpalteB1
.AddItem "AB"
End With
Case Is = 3
With CBSpalteB1
.AddItem "AC"
.AddItem "AD"
.AddItem "AE"
.AddItem "AF"
End With
Case Is = 4
With CBSpalteB1
.AddItem "253"
.AddItem "235"
.AddItem "345"
End With
Case Is = 5
With CBSpalteB1
.AddItem "574"
.AddItem "235"
.AddItem "65"
End With
Case Is = 6
With CBSpalteB1
.AddItem "363"
.AddItem "24"
.AddItem "53"
.AddItem "75"
.AddItem "586"
End With
End Select
End Sub
Das ganze würde jetzt noch bis CBSpalteA20 gehen, was einen ziemlich langen Code zur Folge hätte. Ich weiß, dass ich das irgendwie über ein Klassenmodul lösen kann, aber habe keien Ahnung wie. Alle meine Versuchen diesbezüglich scheiterten...
Vielleicht kann mir jemand behilflich sein =)
Grüße
|