TextBox mit ListBox automatisch befüllen lassen durch anklicken eines Eintrags

  • Excel

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Joe70.

    TextBox mit ListBox automatisch befüllen lassen durch anklicken eines Eintrags

    Hallo Zusammen,

    ich bin neu hier und das ist mein erster Beitrag ! (bitte verzeiht mir Anfängerfehler)

    Bin absoluter Anfänger und Bastel mir aus verschiedenen Beiträgen und Funden im Netz meine Lösungen zusammen , was ich meistens auch hinbekomme, diesmal aber nicht so ...

    Folgende Ausgangs Situation:
    ich habe eine Tabelle mit Namen, Vornamen, Adressen etc...
    Im Userform1 habe ich zwei Listboxen (1 und 2) in der ersten lasse ich mir alle Einträge Anzeigen mit zwei Spalten (in der ersten Spalte eine Fortlaufende Nummer und in der zweiten den Nachnamen)
    wenn man nun einen Eintrag anklickt werden bestimmte Spalteninhalte von Tabelle1 in 9 TextBoxen übertragen.. Das Funktioniert auch soweit ganz gut.

    Nun ist die Kundenliste sehr groß mit über 30.000 Einträgen und ich habe mir eine Suchfunktion gebastelt in Form einer TextBox10 .
    Wenn ich dort jetzt einen Vor oder Nachnamen suche oder auch nur Teile davon also nur den ersten Buchstaben Tippe dann Listet er mir alle Namen und Vornamen in der ListBox2 auf.... Das Funktioniert auch soweit..

    Jetzt kommt aber mein Problem , sobald ich aber dort einen Eintrag in der ListBox2 auswähle sollte er nun auch bestimmte werte (namen, Vorname , Adresse.. etc) wieder in die TextBoxen 1-9 übertragen, was aber diesmal nicht passiert und ich hab keine Ahnung wo mein Fehler liegt ?????

    Ich bin kein VBA Experte und hab wie gesagt sehr wenig Erfahrung mit VBA Programierung und hoffe nun auf diesem Wege das sich jemand erbarmt und mir aus der Patsche hilft ?

    Hier mal meine Suchfunktion und der ListBox2 Inhalt:
    Spoiler anzeigen

    Visual Basic-Quellcode

    1. Private Sub TextBox10_Change()
    2. Dim strSuche As String
    3. Dim lngLang As Long
    4. Dim i As Long
    5. Dim lZeile As Long
    6. strSuche = TextBox10.Value
    7. lngLang = Len(strSuche)
    8. If strSuche = "" Then Exit Sub
    9. 'Inhalt der Listbox2 löschen
    10. ListBox2.Clear
    11. 'Nur Daten aus Spalte A in Listbox eintragen, deren Anfang dem Suchbegriff entspricht; durch LCase wird Groß-/Kleinschreibung ignoriert
    12. For i = 2 To Tabelle1.Cells(Rows.Count, 1).End(xlUp).Row
    13. If Left(LCase(Worksheets("Tabelle1").Cells(i, 2)), lngLang) = LCase(strSuche) Or Left(LCase(Worksheets("Tabelle1").Cells(i, 3)), lngLang) = LCase(strSuche) Then ListBox2.AddItem Tabelle1.Cells(i, 2) & ", " & Worksheets("Tabelle1").Cells(i, 3)
    14. Next i
    15. End Sub
    16. ------------------------------------
    17. 'Klick auf die ListBox Ereignisroutine
    18. Private Sub ListBox2_Click()
    19. Dim lZeile As Long
    20. 'Wenn der Benutzer einen Namen anklickt, suchen wir
    21. 'diesen in der Tabelle1 heraus und tragen die Daten
    22. 'in die TextBoxen ein.
    23. 'Wir löschen standardmäßig alle bisherigen TextBoxen-Inhalte
    24. TextBox1 = ""
    25. TextBox2 = ""
    26. TextBox3 = ""
    27. TextBox4 = ""
    28. TextBox5 = ""
    29. TextBox6 = ""
    30. TextBox7 = ""
    31. TextBox8 = ""
    32. TextBox9 = ""
    33. 'Nur wenn ein Eintrag selektiert/markiert ist
    34. If ListBox1.ListIndex >= 0 Then
    35. lZeile = 2 'Start in Zeile 2, Zeile 1 sind ja die Überschriften
    36. 'Schleife solange etwas in der ersten Spalte in Tabelle 1 drin steht
    37. Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) <> ""
    38. 'Wenn wir den Namen aus der ListBox2 in der Tabelle1 Spalte 3
    39. 'gefunden haben, übertragen wir die anderen Spalteninhalte
    40. 'in die TextBoxen!
    41. If ListBox2.Text = Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) Then
    42. 'TextBoxen füllen
    43. TextBox1 = Tabelle1.Cells(lZeile, 3).Value
    44. TextBox2 = Tabelle1.Cells(lZeile, 2).Value
    45. TextBox3 = Tabelle1.Cells(lZeile, 11).Value
    46. TextBox4 = Tabelle1.Cells(lZeile, 4).Value
    47. TextBox5 = Tabelle1.Cells(lZeile, 6).Value
    48. TextBox6 = Tabelle1.Cells(lZeile, 13).Value
    49. TextBox7 = Tabelle1.Cells(lZeile, 7).Value
    50. TextBox8 = Tabelle1.Cells(lZeile, 12).Value
    51. TextBox9 = Tabelle1.Cells(lZeile, 16).Value
    52. Exit Do 'Vorzeitiges Ende, da der Datensatz schon gefunden ist
    53. End If
    54. lZeile = lZeile + 1 'Nächste Zeile bearbeiten
    55. Loop
    56. End If
    57. End Sub


    Vielen Dank schon mal im vorraus der sich die Zeit nimmt und mir versucht zu helfen !!!!

    Schöne Grüße
    Joe

    Mhhh.. jetzt haben es sich ja schon einige angesehen aber geantwortet hat noch keiner :(
    Für mich Anfänger stellt sich jetzt natürlich die Frage hab ich es nicht verständlich beschrieben oder ist es so nicht machbar ??
    Ich hoffe trotzdem noch weil ich nach über 2 Wochen mit rumprobieren einfach nicht hinbekomme, was auch daran liegt das ich nicht wirklich VBA kann ;(

    CodeTags gesetzt
    aufgrund des Codeumfangs Spoiler hinzugefügt
    ~VaporiZed

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „VaporiZed“ ()

    Hey :)
    Wenn ich das richtig mitbekommen habe möchtest du noch den Ausgewählten Eintrag einer ListBox in einer Textbox anzeigen lassen.
    Falls ja, wäre der Quellcode doch nicht mal schwer?

    VB.NET-Quellcode

    1. Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged
    2. TextBox1.text = ListBox1.SelectedItem.ToString
    3. End Sub


    --
    LG Felix/LPaithor
    Hallo Zusammen,

    und vielen Dank für die Antworten !
    ich habe das Problem mittlerweile selber lösen können, ich wollte einfach das das suchergebnis was ich in listbox2 mache beim anklicken eines eintrags er mir wieder die werte in die TextBoxen schreibt so wie es mit der listbox1 eben auch funktioniert.
    Hier meine Lösung:

    Visual Basic-Quellcode

    1. Private Sub TextBox11_Change()
    2. Dim strSuche As String
    3. Dim lngLang As Long
    4. Dim i As Long
    5. Dim lZeile As Long
    6. strSuche = TextBox11.Value
    7. lngLang = Len(strSuche)
    8. If strSuche = "" Then Exit Sub
    9. 'Inhalt der Listbox2 löschen
    10. ListBox2.Clear
    11. 'Nur Daten aus Spalte A in Listbox eintragen, deren Anfang dem Suchbegriff entspricht; durch LCase wird Groß-/Kleinschreibung ignoriert
    12. For i = 2 To Tabelle1.Cells(Rows.Count, 1).End(xlUp).Row
    13. If Left(LCase(Worksheets("Tabelle1").Cells(i, 2)), lngLang) = LCase(strSuche) Or Left(LCase(Worksheets("Tabelle1").Cells(i, 3)), lngLang) = LCase(strSuche) Then
    14. ListBox2.AddItem Trim(CStr(Tabelle1.Cells(i, 1).Value))
    15. ListBox2.List(ListBox2.ListCount - 1, 1) = Trim(CStr(Tabelle1.Cells(i, 2)))
    16. ListBox2.List(ListBox2.ListCount - 1, 2) = Trim(CStr(Tabelle1.Cells(i, 3)))
    17. End If
    18. Next i
    19. End Sub


    Das Problem lag an der Zeile: ListBox2.AddItem Trim(CStr(Tabelle1.Cells(i, 1).Value)) .
    weil hier die eindeutige ID hinterlegt ist.

    Gruss Joe

    CodeTags gesetzt ~VaporiZed

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()