Spalte mit selektierten Eintrag von Listbox vergleichen + Checkbox

  • Excel

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von TeamBob.

    Spalte mit selektierten Eintrag von Listbox vergleichen + Checkbox

    Hallo Community,

    ich habe folgendes Problem.
    In Userform sind mehrere Textboxen eingefügt, in welche Daten eingegeben werden. Diese Daten werden dann in einer Tabelle eingefügt
    und in einer Listbox wird immer ein Eintrag deutlich anhand einer vorher bestimmten Textbox.
    Wenn man nun in der Listbox einen Eintrag auswählt, werden die zugehörigen Daten in die Textfelder geladen.
    Dies geschieht alles anhand von einem Kriterium, welcher auch in der Listbox angezeigt wird. Das Problem ist, dass sobald dieses
    Krtierium genau 2x auftritt, sich die zweite Textbox nicht mehr läd, da es das erste gefunden Kriterium wählt und reinläd.
    Wie kann ich die Suche und Ausfüllen anhand von 2 Kriterien einbinden?

    Ein weiterer Punkt wäre, dass bei der Eingabe von Textfelder auch eine Checkbox abgehackt werden kann.
    Dazu möchte ich, das wenn die Checkbox betätigt wird, einfach ein "JA" bzw. "NEin" in die jeweilige zugehörige Zeile mit eingtragen wird.
    Wie kann ich dies umsetzen.

    Hier der Auszug vom Quelltext.
    Vielen Dank für Eure Hilfe


    Visual Basic-Quellcode

    1. 'Neuer Eintrag Schaltfläche Ereignisroutine
    2. Private Sub NeuerArtikel3_Click()
    3. Dim lZeile As Long
    4. 'neuen Eintrag erzeugen
    5. 'erstellen eines neuen Eintrags in der ListBox und markieren
    6. lZeile = 3 'Start in Zeile 3
    7. 'Schleife solange etwas in der ersten Spalte in Tabelle 1 drin steht
    8. Do While Trim(CStr(Tabelle3.Cells(lZeile, 1).Value)) <> ""
    9. lZeile = lZeile + 1 'Nächste Zeile bearbeiten
    10. Loop
    11. Tabelle3.Cells(lZeile, 1) = CStr("Neuer Eintrag Zeile " & lZeile)
    12. 'Und neuen Eintrag in die UserForm eintragen
    13. ListBox3.AddItem CStr("Neuer Eintrag Zeile " & lZeile)
    14. 'Den neuen Eintrag markieren mit Hilfe des ListIndexes
    15. ListBox3.ListIndex = ListBox3.ListCount - 1
    16. 'Durch das Click Ereignis der ListBox werden die Daten automatisch geladen
    17. End Sub
    18. 'Speichern Schaltfläche Ereignisroutine
    19. Private Sub Speichern3_Click()
    20. Dim lZeile As Long
    21. 'Ausbauoption: Prüfen, ob die ID in Tabelle1 Spalte 1 schon vorhanden ist!
    22. lZeile = 3 'Start in Zeile 3
    23. 'Schleife solange etwas in der ersten Spalte in Tabelle 1 drin steht
    24. Do While Trim(CStr(Tabelle3.Cells(lZeile, 1).Value)) <> ""
    25. 'Datensatz ID Spalte mit selektiertem Eintrag der ListBox vergleichen
    26. If ListBox3.Text = Trim(CStr(Tabelle3.Cells(lZeile, 1).Value)) Then
    27. 'Eintrag gefunden, TextBoxen in die Zellen schreiben
    28. Tabelle3.Cells(lZeile, 2).Value = Holzart3.Text
    29. Tabelle3.Cells(lZeile, 3).Value = Trim(CStr(Abmessungen.Text))
    30. Tabelle3.Cells(lZeile, 4).Value = AnzahlMatten.Text
    31. Tabelle3.Cells(lZeile, 5).Value = Personal3.Text
    32. Tabelle3.Cells(lZeile, 6).Value = Information3.Text
    33. Tabelle3.Cells(lZeile, 1).Value = Date
    34. Tabelle3.Cells(lZeile, 8).Value = Format(Time, "hh:mm:ss")
    35. 'Die ListBox muss nun neu geladen werden
    36. 'allerdings nur, wenn sich der Name (ID) geändert hat
    37. If ListBox3.Text <> Trim(CStr(Abmessungen.Text)) Then
    38. Call UserForm3_Initialize
    39. If ListBox3.ListCount > 0 Then ListBox3.ListIndex = 0
    40. End If
    41. Exit Do 'Vorzeitiges Ende, da der Datensatz schon gefunden ist
    42. End If
    43. lZeile = lZeile + 1 'Nächste Zeile bearbeiten
    44. Loop
    45. 'Klick auf die ListBox Ereignisroutine
    46. Private Sub ListBox3_Click()
    47. Dim lZeile As Long
    48. 'Wenn der Benutzer einen Namen anklickt, suchen wir
    49. 'diesen in der Tabelle1 heraus und tragen die Daten
    50. 'in die TextBoxen ein.
    51. 'Wir löschen standardmäßig alle bisherigen TextBoxen-Inhalte
    52. Holzart3 = ""
    53. Abmessungen = ""
    54. Personal3 = ""
    55. AnzahlMatten = ""
    56. Information3 = ""
    57. 'Nur wenn ein Eintrag selektiert/markiert ist
    58. If ListBox3.ListIndex >= 0 Then
    59. lZeile = 3 'Start in Zeile 3
    60. 'Schleife solange etwas in der ersten Spalte in Tabelle 1 drin steht
    61. Do While Trim(CStr(Tabelle3.Cells(lZeile, 1).Value)) <> ""
    62. 'Wenn wir den Namen aus der ListBox1 in der Tabelle1 Spalte 1
    63. 'gefunden haben, übertragen wir die anderen Spalteninhalte
    64. 'in die TextBoxen!
    65. If ListBox3.Text = Trim(CStr(Tabelle3.Cells(lZeile, 2).Value)) Then
    66. 'TextBoxen füllen
    67. Abmessungen = Trim(CStr(Tabelle3.Cells(lZeile, 3).Value))
    68. AnzahlMatten = Tabelle3.Cells(lZeile, 4).Value
    69. Holzart3 = Tabelle3.Cells(lZeile, 2).Value
    70. Personal3 = Tabelle3.Cells(lZeile, 5).Value
    71. Information3 = Tabelle3.Cells(lZeile, 6).Value
    72. Exit Do 'Vorzeitiges Ende, da der Datensatz schon gefunden ist
    73. End If
    74. lZeile = lZeile + 1 'Nächste Zeile bearbeiten
    75. Loop
    76. End If
    77. End Sub
    78. 'Startroutine, wird ausgeführt bevor die Eingabemaske angezeigt wird
    79. Private Sub UserForm3_Initialize()
    80. Dim lZeile As Long
    81. 'Alle TextBoxen leer machen
    82. Holzart3 = ""
    83. Abmessungen = ""
    84. AnzahlMatten = ""
    85. Personal3 = ""
    86. Information3 = ""
    87. 'laden aller vorhandenen Einträge in die ListBox1
    88. ListBox3.Clear 'Zuerst einmal die Liste leeren
    89. lZeile = 3 'Start in Zeile 3
    90. 'Schleife solange etwas in der ersten Spalte in Tabelle 1 drin steht
    91. Do While Trim(CStr(Tabelle3.Cells(lZeile, 1).Value)) <> ""
    92. 'Aktuelle Zeile in die ListBox eintragen
    93. If Tabelle3.Cells(lZeile, 1).Value = Date Then
    94. ListBox3.AddItem Trim(CStr(Tabelle3.Cells(lZeile, 2).Value))
    95. End If
    96. lZeile = lZeile + 1 'Nächste Zeile bearbeiten
    97. Loop
    98. End Sub
    Hallo
    Habe den Code angepasst bzw. aus verschiedenen zusammengebaut.

    Nein das Problem ist, dass er nur nach ein kriterium sucht und das erste was er findet nimmt er und füllt die Textboxen aus.
    Jedoch ist dies vielleicht nicht das richtige, sondern diese Kriterium nach dem er sucht gibt es doppelt, wodurch er noch ein
    anderen Krierium mit einbeziehen sollte. Es soll somit nach 2 kriterien verglichen werden und erst wenn die bedien passen,
    dann die jeweilige Zeile in die Textboxen übertragen

    TeamBob schrieb:

    Habe den Code angepasst bzw. aus verschiedenen zusammengebaut.

    online-vba.de/vba_tutorialuserform.php steht da nicht irgendwas von

    Autor und Copyright: Marc Wershoven - IT / EDV Dienstleistungen und Beratung
    ' Homepage: online-vba.de - E-Mail: info@online-vba.de
    ' ------------------------------------------------------------------------------------------------
    ' Wichtige Hinweise:
    ' - Verwendung der Quelltexte auf eigene Gefahr!
    ' - Bitte beachten Sie die Nutzungsbedingungen von online-vba.de!
    ' - Dieser Hinweis inkl. Autorennennung darf nicht entfernt werden!
    ' - Jede Weiterübermittlung, Veröffentlichung oder Verbreitung ist untersagt!
    ' - Eine kommerzielle/gewerbliche Verwendung ist nicht gestattet!
    ' ************************************************************************************************
    ' Diese Hinweise beziehen sich auf den Quelltext, wie dieser unter dem folgenden Link, unverändert
    ' als Original zu sehen ist und gelten nicht für Veränderungen durch Nutzer bzw. Dritte:
    ' online-vba.de/vba_tutorialuserform.php
    ' ************************************************************************************************
    Gruss Mirco
    Ich habe jetzt schon viel versucht, aber leider immernoch keine Lösung gefunden.
    Wie gesagt, im moment liest er die Werte aus einer Tabelle anahnd einer Celle ein und füllt dann die zugehörigen Textfelder aus.
    Es sollte jedoch einfach 2 Cellen prüfen und wenn die beiden Werte passen, dann erst die Textfelder ausfüllen.
    Wäre über Hilfe echt dankbar.
    Vielen Dank
    Hallo
    Ich habe die Excel hier mal hochgeladen.
    Habe schon 2 Werte eingegeben. Alle Spalten sind unterschiedlich nur der Punkt "Chargennr" ist identisch und nach diesen soll
    er unterscheiden. In der Bedienmaske wird dann in der Listbox 2x die Zahl 1 angezeigt (Chargennr.). Jedoch wenn man auf die erste chrage klickt,
    läd er die Zellen der ersten Charge und bei der 2ten Charge auch die selben Werte, da die Chargen identisch bezeichnet wurden.
    Das heitßt es müsste nach chargen und ein weiteren Kritierum auswählen.

    workupload.com/file/Egx6DXcl