AW: Listbox anhand Combobox füllen
20.01.2015 14:25:30
Klaus
Hallo Marco,
zunächst mal: für ComboBox1 habe ich dir hier den Code geschrieben. Der Rest ist Fleißarbeit. In deiner Musterdatei wird der Code zu einem Fehler führen, da er TextBox7.CHANGE auslöst - die dort fehlerhafte Zeile habe ich einfach auskommentiert.
Private Sub ComboBox1_Change()
On Error GoTo hell
Dim i As Long
i = WorksheetFunction.Match(ComboBox1.Value, Columns(9), False)
TextBox7.Value = Cells(i, 1).Value & "/" & Cells(i, 2).Value
TextBox8.Value = Cells(i, 3).Value
TextBox9.Value = Cells(i, 4).Value
TextBox10.Value = Cells(i, 6).Value
TextBox11.Value = Cells(i, 8).Value
hell:
End Sub
Jetzt aber einen Ratschlag vom "alten Hasen" an den "Neuling":
Deine Namensgebung ist eine Katastrophe. Wenn du in drei Monaten nochmal in den Code schaust, wie willst du dann noch wissen was TextBox7 ist? Gewöhne dir an, alle Objekte sprechend zu benennen! Wenn man es immer gleich macht, ist es kaum Arbeit und der Code wird viel lesbarer. Mal ein Beispiel, sagen wir ich habe für "Location" die falsche Spalte erwischt, oder du musst in der Tabelle eine Spalte einfügen und danach den Code anpassen. Wie hieß nochmal die TextBox, die jetzt geändert werden muss?
Mal ein Beispiel für "sprechenden" Code (genau der gleiche wie oben):
Private Sub CB_Request_K1_Change()
On Error GoTo hell
Dim ZeileFinden As Long
ZeileFinden = WorksheetFunction.Match(CB_Request_K1.Value, Columns(9), False)
TB_Titel_K1.Value = Cells(ZeileFinden, 1).Value & "/" & Cells(ZeileFinden, 2).Value
TB_Start_K1.Value = Cells(ZeileFinden, 3).Value
TB_Ende_K1.Value = Cells(ZeileFinden, 4).Value
TB_Location_K1.Value = Cells(ZeileFinden, 6).Value
TB_Typ_K1.Value = Cells(ZeileFinden, 8).Value
hell:
End Sub
Das ist EXAKT der gleiche Code. Aber wenn du da drin die TextBox für die Location von Kurs 1 suchst, findest du sie umgehend.
Daher mein Rat: Geh die gesamte Userform durch und bring ALLE Namen auf den Stand. Das braucht einmalig ne Stunde Zeit, aber das gesamte weitere Programmieren wird dir viel einfacher von der Hand gehen. Dank mir später :-)
Grüße,
Klaus M.vdT.