Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Formular-ListBox Multiselect auslesen

Formular-ListBox Multiselect auslesen
18.05.2016 07:24:34
Mister-B
Hallo und guten Morgen,
ich habe eine UF mit einer ListBox die mit diesem Makro befüllt wird:
Sub Check_Combo1()
For i = 1 To 208
If ComboBox3.Value = Sheets("LongList").Cells(i, 5).Text Then
Me.ListBox2.AddItem Sheets("LongList").Cells(i, 2)
SpalteBox = 0
With Me.ListBox2
For Spalte = 2 To 2
SpalteBox = SpalteBox + 1
.List(.ListCount - 1, SpalteBox) = Sheets("LongList").Cells(i, 3)
Next
End With
With Me.ListBox2
For Spalte = 3 To 3
SpalteBox = SpalteBox + 1
.List(.ListCount - 1, SpalteBox) = Sheets("LongList").Cells(i, 5)
Next
End With
With Me.ListBox2
For Spalte = 4 To 4
SpalteBox = SpalteBox + 1
.List(.ListCount - 1, SpalteBox) = Sheets("LongList").Cells(i, 6)
Next
End With
With Me.ListBox2
For Spalte = 5 To 5
SpalteBox = SpalteBox + 1
.List(.ListCount - 1, SpalteBox) = Sheets("LongList").Cells(i, 10)
Next
End With
With Me.ListBox2
For Spalte = 6 To 6
SpalteBox = SpalteBox + 1
.List(.ListCount - 1, SpalteBox) = Sheets("LongList").Cells(i, 16)
Next
End With
With Me.ListBox2
For Spalte = 7 To 7
SpalteBox = SpalteBox + 1
.List(.ListCount - 1, SpalteBox) = Sheets("LongList").Cells(i, 9)
Next
End With
End If
Next
End Sub
Ich möchte nun mittels Multiselect einige Einträge auswählen und nach drucken eines CommandButtons sollen die entsprechenden Einträge in der Tabelle ("LongList") in Spalte 17 mit einem "100" ergänzt werden.
Kann jemand mir bitte helfen. Ich habe einiges probiert aber immer wurde nur der letzte markierte Eintrag berücksichtigt.
Vielen Dank und Gruß
Martin

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Formular-ListBox Multiselect auslesen
18.05.2016 07:59:11
Nepumuk
Hallo,
ich war so frei dein Füll-Makro zu überarbeiten.
Private Sub Check_Combo1()
    
    Dim lngRow As Long
    
    With ListBox2
        
        For lngRow = 1 To 208
            
            If ComboBox3.Text = Worksheets("LongList").Cells(lngRow, 5).Text Then
                
                .AddItem Worksheets("LongList").Cells(lngRow, 2).Text
                .List(.ListCount - 1, 1) = Worksheets("LongList").Cells(lngRow, 3).Text
                .List(.ListCount - 1, 2) = Worksheets("LongList").Cells(lngRow, 5).Text
                .List(.ListCount - 1, 3) = Worksheets("LongList").Cells(lngRow, 6).Text
                .List(.ListCount - 1, 4) = Worksheets("LongList").Cells(lngRow, 10).Text
                .List(.ListCount - 1, 5) = Worksheets("LongList").Cells(lngRow, 16).Text
                .List(.ListCount - 1, 6) = Worksheets("LongList").Cells(lngRow, 9).Text
                
            End If
        Next
    End With
End Sub

Private Sub CommandButton1_Click()
    Dim lngIndex As Long
    With ListBox2
        For lngIndex = 0 To .ListCount - 1
            If .Selected(lngIndex) Then
                
                'Hier was auch immer
                
            End If
        Next
    End With
End Sub

Gruß
Nepumuk

Anzeige
AW: Formular-ListBox Multiselect auslesen
18.05.2016 08:18:08
Mister-B
Hallo Nepumuk,
vielen Dank für die schnelle Hilfe. Ich verstehe, dass das zweite Makro die ListBox durchsucht und merkt sich die ausgewählten Eintragungen. Aber wie stelle ich eine Verbindung zwischen dem Inhalt der ListBox und die Tabelle her? So z.B. wenn die ersten Spalten der markierten Eintragungen in der Listbox den gleichen Inhalt haben wie die entsprechenden Zellen in Spalte 1 der Tabelle dann...?
Ich hoffe du kannst mir weiter helfen.
Viele Grüße
Martin

Anzeige
AW: Formular-ListBox Multiselect auslesen
18.05.2016 08:21:01
Nepumuk
Hallo,
am einfachsten, du speicherst die Zeilennummer zusätzlich in der ListBox.
Gruß
Nepumuk

AW: Formular-ListBox Multiselect auslesen
18.05.2016 08:12:25
ransi
Hallo MArtin,
Schau dir mal die selected-Eigenschaft der ListBox an.
Damit kannst du Multiselect auswerten.
Option Explicit

Private Sub CommandButton1_Click()
    Dim I As Integer
    For I = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(I) = True Then
            MsgBox ListBox1.List(I)
        End If
    Next
End Sub


ransi
Anzeige
;

Forumthreads zu verwandten Themen

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

Formular-ListBox Multiselect Auslesen in Excel


Schritt-für-Schritt-Anleitung

  1. Erstelle eine UserForm in Excel mit einer ListBox und einer ComboBox. Stelle sicher, dass die ListBox die Eigenschaft MultiSelect auf fmMultiSelectMulti eingestellt hat, damit mehrere Einträge ausgewählt werden können.

  2. Fülle die ListBox mit einem Makro, das auf Basis der Auswahl in der ComboBox die entsprechenden Daten aus dem Arbeitsblatt "LongList" hinzufügt. Hier ist ein Beispiel:

    Private Sub Check_Combo1()
        Dim i As Long
        Dim SpalteBox As Integer
        For i = 1 To 208
            If ComboBox3.Value = Sheets("LongList").Cells(i, 5).Text Then
                Me.ListBox2.AddItem Sheets("LongList").Cells(i, 2)
                SpalteBox = 0
                For Spalte = 2 To 6
                    SpalteBox = SpalteBox + 1
                    .List(.ListCount - 1, SpalteBox) = Sheets("LongList").Cells(i, Spalte + 1)
                Next
            End If
        Next
    End Sub
  3. Füge einen CommandButton hinzu, der die ausgewählten Einträge in der ListBox verarbeitet. Hier ist ein Beispiel, wie du die ausgewählten Einträge in der Tabelle "LongList" aktualisieren kannst:

    Private Sub CommandButton1_Click()
        Dim lngIndex As Long
        With ListBox2
            For lngIndex = 0 To .ListCount - 1
                If .Selected(lngIndex) Then
                    ' Hier die Logik hinzufügen, um die entsprechende Zeile in "LongList" zu aktualisieren
                    Sheets("LongList").Cells(lngIndex + 1, 17).Value = 100
                End If
            Next
        End With
    End Sub

Häufige Fehler und Lösungen

  • Nur der letzte Eintrag wird berücksichtigt: Stelle sicher, dass du die Schleife richtig konfiguriert hast. Überprüfe, ob die Selected-Eigenschaft der ListBox korrekt ausgewertet wird.

  • ListBox bleibt leer: Vergewissere dich, dass die ComboBox tatsächlich einen Wert hat, der in den Zellen von "LongList" existiert. Möglicherweise musst du die Datenquelle überprüfen.

  • Fehler beim Zugriff auf Zellen: Stelle sicher, dass die Indizes korrekt sind und die Zellen existieren, bevor du darauf zugreifst.


Alternative Methoden

  • Combobox Multiselect: Wenn du an einer ComboBox mit Mehrfachauswahl interessiert bist, kannst du VBA verwenden, um ähnliche Logik anzuwenden. Allerdings unterstützt die Standard-ComboBox keine Mehrfachauswahl.

  • HTML ListBox für Webanwendungen: Wenn du mit Webanwendungen arbeitest, kannst du eine HTML-ListBox mit der multiple-Eigenschaft verwenden, um Mehrfachauswahlen zu ermöglichen.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du die Selected-Eigenschaft der ListBox in VBA verwenden kannst, um die ausgewählten Elemente auszulesen:

Private Sub CommandButton1_Click()
    Dim I As Integer
    For I = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(I) Then
            MsgBox ListBox1.List(I)
        End If
    Next I
End Sub

Dieses Beispiel zeigt eine Nachricht für jeden ausgewählten Eintrag in der ListBox an.


Tipps für Profis

  • Verwende Arrays zum Speichern der ausgewählten Einträge, um die Verarbeitung zu optimieren.
  • Implementiere Fehlerbehandlung in deinem VBA-Code, um unerwartete Fehler zu vermeiden.
  • Nutze die Option Explicit-Anweisung, um sicherzustellen, dass alle Variablen deklariert werden, was die Codequalität verbessert.

FAQ: Häufige Fragen

1. Wie kann ich die ausgewählten Einträge in eine andere Liste übertragen?
Du kannst die List-Eigenschaft der ListBox verwenden, um die Werte in eine andere Liste oder Tabelle zu übertragen, indem du die Selected-Eigenschaft überprüfst.

2. Gibt es Einschränkungen bei der Anzahl der auswählbaren Einträge?
Die Anzahl der auswählbaren Einträge hängt von der Größe der ListBox und der verfügbaren Bildschirmfläche ab. Technisch gibt es keine feste Grenze, aber eine zu große Auswahl kann die Benutzeroberfläche unübersichtlich machen.

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