Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Mehrfachselect in ListBox und Klick-Ereignis?

Mehrfachselect in ListBox und Klick-Ereignis?
Kasimir
Hallo an alle Helfer!
Ich habe da mal eine Frage zum Arbeiten mit einer ListBox. Ich habe eine ListBox, in der ich mir Daten auflisten lasse. Klickt man eine Zeile der ListBox an, werden mir die Daten in TextBoxen geschrieben, so dass ich die Daten darüber ändern kann.
Nun hatte ich nach einer Möglichkeit gesucht, mehrere Zeilen in der ListBox zu markieren um Daten zu löschen. Ich bin hier im Forum auch fündig geworden. Man kann dies über die ListBox-Eigenschaft „MultiSelect“ realisieren. Dies habe ich eingestellt und nun funktioniert aber mein ListBox1_Click-Ereignis nicht mehr.
Kann mir jemand eventuell sagen, wie ich mehrere Daten in der ListBox markieren kann, aber dennoch mein Klick-Ereignis weiterhin funktioniert?
Danke Euch schon mal,
Kasimir
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Mehrfachselect in ListBox und Klick-Ereignis?
25.03.2011 21:35:22
Gerd
Hallo Kasimir,
in welchen Codes soll der Knoten beseitigt werden?
In welchem Objekt ist die Listbox (Tabelle oder Userform)?
Gruß Gerd
AW: Mehrfachselect in ListBox und Klick-Ereignis?
26.03.2011 06:03:38
Kasimir
Moin Gerd
in welchen Codes soll der Knoten beseitigt werden?
Diese Nachfrage verstehe ich leider nicht.
In welchem Objekt ist die Listbox (Tabelle oder Userform)?
Die ListBox befindet sich in einer UserForm.
Gruß
Kasimir
Anzeige
Problem selber gelöst.
26.03.2011 06:59:13
Kasimir
Hallo,
ich habe jetzt selber eine Möglichkeit gefunden. Ich nehme anstelle des Click-Ereignisses der ListBox das MouseUp-Ereignis. Damit erreiche ich das Gleiche und das war es ja, was ich wollte.
Gruß,
Kasimir
ich würde es mit Change Event machen...
26.03.2011 17:56:03
Tino
Hallo,
hier ein Beispielcode
Private Sub ListBox1_Change()
Dim iSelIndex%, iCount%, ArrayData()
With ListBox1
If .ListIndex > -1 Then
ReDim Preserve ArrayData(.ListCount)
For iSelIndex = 0 To .ListCount - 1
If .Selected(iSelIndex) Then
ArrayData(iCount) = .List(iSelIndex)
iCount = iCount + 1
End If
Next iSelIndex
ReDim Preserve ArrayData(iCount - 1)
MsgBox Join(ArrayData, vbCr), Title:="Diese Werte sind Ausgewählt"
End If
End With
End Sub
Gruß Tino
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Mehrfachselect in ListBox und Klick-Ereignis


Schritt-für-Schritt-Anleitung

  1. ListBox in UserForm hinzufügen: Öffne den VBA-Editor (ALT + F11) und füge eine UserForm hinzu. Ziehe eine ListBox auf die UserForm.

  2. MultiSelect aktivieren: Klicke auf die ListBox und stelle in den Eigenschaften die MultiSelect-Eigenschaft auf fmMultiSelectMulti.

  3. Code für das Click-Ereignis hinzufügen: Füge den folgenden Code in das UserForm-Modul ein, um das Click-Ereignis zu nutzen:

    Private Sub ListBox1_Click()
       Dim selectedItem As String
       selectedItem = ListBox1.Value
       TextBox1.Text = selectedItem
    End Sub
  4. MouseUp-Ereignis verwenden: Wenn das Click-Ereignis nicht wie gewünscht funktioniert, kannst du alternativ das MouseUp-Ereignis verwenden:

    Private Sub ListBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
       Dim selectedItem As String
       selectedItem = ListBox1.Value
       TextBox1.Text = selectedItem
    End Sub
  5. Optionale Auswahlverarbeitung: Um die Auswahl mehrerer Elemente in der ListBox zu verarbeiten, kannst du den folgenden Code verwenden:

    Private Sub ListBox1_Change()
       Dim iSelIndex As Long, iCount As Long
       Dim ArrayData() As String
    
       With ListBox1
           If .ListIndex > -1 Then
               ReDim Preserve ArrayData(.ListCount)
               For iSelIndex = 0 To .ListCount - 1
                   If .Selected(iSelIndex) Then
                       ArrayData(iCount) = .List(iSelIndex)
                       iCount = iCount + 1
                   End If
               Next iSelIndex
               ReDim Preserve ArrayData(iCount - 1)
               MsgBox Join(ArrayData, vbCr), Title:="Diese Werte sind Ausgewählt"
           End If
       End With
    End Sub

Häufige Fehler und Lösungen

  • Fehler beim Click-Ereignis: Wenn das ListBox1_Click-Ereignis nicht funktioniert, prüfe, ob die MultiSelect-Eigenschaft korrekt gesetzt ist. In einigen Fällen kann das MouseUp-Ereignis die bessere Wahl sein.

  • Keine Auswahl möglich: Stelle sicher, dass die ListBox im Entwurfsmodus die richtige Eigenschaft für MultiSelect hat.

  • Indexfehler: Achte darauf, dass die ListBox auch tatsächlich Einträge enthält, bevor du versuchst, auf das Value-Attribut zuzugreifen.


Alternative Methoden

  • VBA ListBox Change Event: Anstelle des Click-Ereignisses kannst du auch das Change-Ereignis nutzen, um Aktionen auszulösen, wenn sich die Auswahl ändert. Dies ist besonders nützlich für Multiselect ListBoxen.

  • Verwendung von ComboBox: In einigen Fällen kann eine ComboBox eine bessere Wahl sein, wenn du nur eine Auswahl zulassen möchtest und dennoch eine Dropdown-Funktionalität benötigst.


Praktische Beispiele

  1. Einfaches Multiselect: Erstelle eine UserForm mit einer ListBox, aktiviere die MultiSelect-Eigenschaft und implementiere den oben genannten Change-Code, um mehrere ausgewählte Elemente anzuzeigen.

  2. Datenbankanwendung: Nutze die ListBox, um Datensätze aus einer Datenbank anzuzeigen. Mit dem Change-Ereignis kannst du die Auswahl in einem Bericht oder einer TextBox anzeigen lassen.


Tipps für Profis

  • Verwendung von Arrays: Wenn du mit großen Datenmengen arbeitest, kann es hilfreich sein, die ausgewählten Elemente in ein Array zu speichern, um die Verarbeitung zu optimieren.

  • Erweiterte Ereignisse: Experimentiere mit anderen Events wie DblClick oder KeyPress, um die Benutzerinteraktion zu verbessern.

  • Styling der ListBox: Nutze die Eigenschaften der ListBox, um sie ansprechend zu gestalten und die Benutzererfahrung zu verbessern.


FAQ: Häufige Fragen

1. Wie kann ich mehrere Zeilen in der ListBox auswählen? Aktiviere die MultiSelect-Eigenschaft in den ListBox-Eigenschaften, um mehrere Auswahlmöglichkeiten zu ermöglichen.

2. Was ist der Unterschied zwischen Click und Change Events in VBA? Das Click-Ereignis wird ausgelöst, wenn der Benutzer auf einen Listeneintrag klickt, während das Change-Ereignis ausgelöst wird, wenn sich die Auswahl ändert.

3. Kann ich die Auswahl der ListBox in einer anderen Form speichern? Ja, du kannst die ausgewählten Werte in einer Variablen oder in einem Array speichern und sie dann in einer anderen Form oder Datenbank verwenden.

4. Welche Excel-Version wird benötigt? Die beschriebenen Methoden funktionieren in Excel 2007 und höher.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige