Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Image
BildScreenshot zu Image Image-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema ListBox
BildScreenshot zu ListBox ListBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Listbox Multiselect


Betrifft: Listbox Multiselect von: Markus
Geschrieben am: 02.09.2019 11:16:32

Guten Tag zusammen,

ich habe eine Listbox mit Multiselect und möchte mithilfe der Textbox entweder per Suche (entweder manuelle Eingabe + Enter oder Barcodescanner) einen Eintrag direkt im Multiselect markieren. Derzeit springt die Suche zur jeweiligen Zeile, markiert mir den Eintrag aber nicht, das Setzen des Häkchens muss ich noch manuell machen.
Es soll am besten so ablaufen, dass ich z.B. 5 Barcodes hintereinander Scanne und in der Listbox die 5 richtigen Einträge markiert werden.
Hat jemand mit mehr VBA Kenntnissen eine Idee? Vielen Dank im Voraus!
Mein Code:

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
'Suchfunktion nach Barcode auf Enter in TextBox1
Dim StrSuch As String, firstadr As String, weiter%, sucher As Variant
If KeyCode = 13 Then
'Suche durchführen auf Enter:
    StrSuch = TextBox1.Text
    If StrSuch <> "" Then
        With Sheets("Bestandsliste").Range("b5:b6000")          'Adresse der Listbox
            Set sucher = .Find(what:=StrSuch, Lookat:=xlPart)
            If Not sucher Is Nothing Then
                firstadr = sucher.Address
                ListBox1.ListIndex = sucher.Row - 5
    TextBox1.Value = CStr("Barcode scannen")       'Zurück zur Textbox1 um erneut zu Scannen
    TextBox1.SetFocus
    TextBox1.SelStart = 0
    TextBox1.SelLength = Len(TextBox1)
                    Do
                Set sucher = .FindNext(sucher)
                    ListBox1.ListIndex = sucher.Row - 5
                Loop While Not sucher Is Nothing And sucher.Address <> firstadr
    TextBox1.Value = CStr("Barcode scannen")       'Zurück zur Textbox1 um erneut zu Scannen

    TextBox1.SetFocus
    TextBox1.SelStart = 0
    TextBox1.SelLength = Len(TextBox1)
                End If
        End With
    End If
End If
End Sub

  

Betrifft: AW: Listbox Multiselect von: ChrisL
Geschrieben am: 02.09.2019 13:00:16

Hi Markus

ListBox1.Selected(sucher.Row - 5) = True
cu
Chris


  

Betrifft: AW: Listbox Multiselect von: Markus
Geschrieben am: 02.09.2019 17:21:16

Hallo Chris, vielen Dank für die Antwort. Klappt soweit!

Eine Sache noch:
Um erneut zu scannen, ohne die Textbox1 manuell zu markieren, hab ich folgenden Code angefügt:

TextBox1.Value = CStr("Barcode scannen")       'Zurück zur Textbox1 um erneut zu Scannen
    TextBox1.SetFocus
    TextBox1.SelStart = 0
    TextBox1.SelLength = Len(TextBox1)
Der Text wird richtig eingepflegt, jedoch ist trotzdem die TextBox1 nicht automatisch markiert, hast du noch eine Idee, woran es liegen könnte?


  

Betrifft: AW: Listbox Multiselect von: ChrisL
Geschrieben am: 03.09.2019 11:22:57

Hi Markus

Ne da habe ich im Moment keine Idee.

Da ich unterwegs bin, würde ich vorschlagen, dass du ggf. einen neuen Beitrag erstellst.

cu
Chris


Beiträge aus dem Excel-Forum zum Thema "Listbox Multiselect"