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

Forumthread: Listbox mit Multiselect Daten auslesen

Listbox mit Multiselect Daten auslesen
30.01.2018 19:20:49
Sebi
Hallo Zusammen,
ich hätte eine Frage:
Ich habe in meiner Userform eine Listbox mit hinterlegter "Single - Eigenschaft", also so dass ich nur eine Auswahl aus der Listbox anwählen kann. Bei jedem Klick auf die jeweils getroffene Auswahl, werden mir die entsprechenden Daten in die Textboxen ausgelesen.
Dazu verwende ich folgenden Code. Und das klappt auch wunderbar:
Meine Frage ist nun:
Wie muss ich diesen Code umschreiben wenn ich die "Multiselect-Funktion" verwenden möchte und nun die jeweils aktuell angeklickte Auswahl aus der Listbox in den Textboxen aktualisiert sehen möchte.
Kann mir jemand diesbezgl. helfen ?
Viele Grüße
Sebi
Private Sub ListBox1_Click()
Dim Zeile As Long
Dim Zelle As Range
With Me.ListBox1
If .ListIndex  -1 Then
Zeile = .List(.ListIndex, .ColumnCount - 1)
Call prcAnzeigeFelderAusfuellen(Zeile, SpaEK:=.List(.ListIndex, .ColumnCount - 3))
End If
End With
End Sub

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Listbox mit Multiselect Daten auslesen
30.01.2018 19:27:09
Daniel
Hi
im Prinzip so:
Dim Zeile As Long
dim i as Long
With Me.ListBox1
for i = 0 to .Listcount - 1
If .Selected(i) then
Zeile = .List(i, .columnCount - 1)
Call prcAnz....
end if
next
End with
das geeignete Event müsstest du mal testen, wenn CLICK nicht funktioniert, vielleicht auch MOUSEUP, EXIT oder AFTERUPDATE
Gruß Daniel
Anzeige
AW: Listbox mit Multiselect Daten auslesen
30.01.2018 19:58:27
Sebi
Hey Daniel,
danke für deine Antwort. Bin totale Anfängerin. Habe deinen Code ausprobiert, nur leider funktioniert es nicht. Habe click ersetzt mit Afterupdate, mouseup und exit aber leider ohne Erfolg.
Bei Mouseup und Exit bekomme ich die Meldung:
"Deklaration der Prozedur entspricht nicht der Beschreibung eines Ereignisses oder einer Prozedur mit dem selben Namen"
Hast du vielleicht eine Idee was ich da falsch mache ?
Liebe Grüße
Sebi
Anzeige
AW: Listbox mit Multiselect Daten auslesen
30.01.2018 20:02:49
Daniel
Hi
naja einfach ersetzen funktioniert bei den Events nicht, die Kopfzeile eines Eventmakros muss schon korrekt sein.
du siehst im VBA-Editor überhalb des Codefensters 2 Comboboxen.
in der linken wählst du das Objekt aus, für das du ein Eventmakro erstellen willst.
dann erscheinen in der rechten die für dieses Objekt möglichen Events.
dort wählst du eines aus.
Besteht das Makro schon, wird es dir im Codefenster angezeigt.
Besteht es noch nicht, wird es neu erstellt mit Kopf- und Endzeile.
zwsichen diesen beiden schreibst du dann den neuen Code.
Gruß Daniel
Anzeige
AW: Listbox mit Multiselect Daten auslesen
30.01.2018 20:23:46
Sebi
Hi
o ja das klingt logisch ;-)))
Mit dem Mousup-Event funktioniert es, bin total glücklich. Es funktioniert sogar für beide Eigenschaften, also Single und Multiselect :-), da ich die Multi-Eigenschaft nämlich über einen Option-Button aktiviere, gefällt mir diese Lösung richtig gut.
Danke nochmal für die kleine Lehrstunde :))
Viele Grüße
Sebi
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Listbox mit Multiselect Daten auslesen


Schritt-für-Schritt-Anleitung

Um eine VBA Listbox mit der Funktionalität für Multiselect zu erstellen, kannst du folgende Schritte befolgen:

  1. Userform erstellen: Öffne die VBA-Entwicklungsumgebung (ALT + F11) und füge eine Userform hinzu.

  2. Listbox hinzufügen: Ziehe eine Listbox auf die Userform und stelle sicher, dass die Eigenschaft MultiSelect auf fmMultiSelectMulti eingestellt ist.

  3. Code für die Listbox: Füge den folgenden Code in das entsprechende Ereignis der Listbox ein:

    Private Sub ListBox1_MouseUp()
       Dim Zeile As Long
       Dim i As Long
       With Me.ListBox1
           For i = 0 To .ListCount - 1
               If .Selected(i) Then
                   Zeile = .List(i, .ColumnCount - 1)
                   Call prcAnzeigeFelderAusfuellen(Zeile, SpaEK:=.List(i, .ColumnCount - 3))
               End If
           Next i
       End With
    End Sub
  4. Testen: Starte die Userform und teste die Listbox. Du solltest nun mehrere Elemente auswählen und die entsprechenden Daten in den Textboxen sehen können.


Häufige Fehler und Lösungen

  • Fehler bei der Prozedur-Deklaration: Wenn du die Meldung erhältst, dass die "Deklaration der Prozedur nicht der Beschreibung entspricht", stelle sicher, dass du das korrekte Event-Handler verwendest. Überprüfe den Namen des Event-Makros im VBA-Editor.

  • Keine Auswahl möglich: Vergewissere dich, dass die MultiSelect-Eigenschaft der Listbox korrekt eingestellt ist. Wenn sie auf fmMultiSelectSingle steht, wird nur eine Auswahl ermöglicht.


Alternative Methoden

Eine alternative Methode zur Verwendung von Multiselect Listbox in Excel könnte sein, eine Dropdown-Liste mit mehreren Auswahlmöglichkeiten zu erstellen. Dies kann durch Anpassungen in der Userform und ein wenig VBA erreicht werden. Hierbei kannst du eine ComboBox verwenden, die mit einer benutzerdefinierten Funktion erweitert wird.


Praktische Beispiele

Hier ist ein praktisches Beispiel für den Einsatz einer VBA Listbox mit Multiselect:

Private Sub UserForm_Initialize()
    ' Füge Elemente zur Listbox hinzu
    With Me.ListBox1
        .AddItem "Element 1"
        .AddItem "Element 2"
        .AddItem "Element 3"
    End With
End Sub

Wenn du nun mehrere Elemente auswählst und das MouseUp-Event auslöst, werden die entsprechenden Daten in den Textboxen angezeigt.


Tipps für Profis

  • Nutze die ListCount-Eigenschaft, um die Anzahl der Elemente in der Listbox zu ermitteln und deine Logik entsprechend zu gestalten.
  • Experimentiere mit den verschiedenen Event-Handlern wie AfterUpdate oder Change, um das Verhalten der Listbox weiter anzupassen.
  • Verwende Option-Buttons, um zwischen Single und Multiselect zu wechseln, um die Benutzererfahrung zu verbessern.

FAQ: Häufige Fragen

1. Wie aktiviere ich die Multiselect-Funktion in meiner Listbox?
Setze die MultiSelect-Eigenschaft der Listbox im Eigenschaftenfenster auf fmMultiSelectMulti.

2. Warum funktioniert mein Code nicht bei der Verwendung von Click?
Überprüfe, ob du den richtigen Event-Handler verwendest. Bei Multiselect kann MouseUp oder AfterUpdate besser geeignet sein.

3. Kann ich die ausgewählten Elemente in einer Zelle anzeigen?
Ja, du kannst die ausgewählten Elemente in einer Zelle zusammenfassen, indem du eine Schleife durch die Listbox-Elemente machst und die ausgewählten Werte in eine Zelle schreibst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige