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

Forumthread: Werte aus Listbox mit MultiSelect

Werte aus Listbox mit MultiSelect
21.01.2005 14:36:06
R.Schmitt
Liebe Sachverständige,
wie stelle ich es an, die in einer ListBox
mit der Option MultiSelect (alsomehr als
nur eine Auswahl) ausgewählten Werte (nehmen
wir an es seien 5 von insgesamt 10) in den
Tabellenbereich A1:A5 zu übertragen ?
Mit LinkedCell ist da ja kein Blumentopf
zu gewinnen.
Grüße und allen ein schönes Wochenende
R.Schmitt
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte aus Listbox mit MultiSelect
21.01.2005 14:43:40
Peter
Hallo,
mußt Du jedoch noch Deinen Bedürfnissen anpassen.
Peter
Option Explicit

Private Sub cmdInsert_Click()
Dim arrValues() As Variant
Dim intLastRow As Integer, intRow As Integer, intCol As Integer, intRowU As Integer
lstMultiCol.Clear
intLastRow = Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row
For intRow = 1 To intLastRow
If Not IsEmpty(Worksheets(1).Cells(intRow, 1)) Then
ReDim Preserve arrValues(0 To 4, 0 To intRowU) 'anpassen
arrValues(0, intRowU) = Worksheets(1).Cells(intRow, 1)
arrValues(1, intRowU) = Worksheets(1).Cells(intRow, 2)
arrValues(2, intRowU) = Worksheets(1).Cells(intRow, 3)
arrValues(3, intRowU) = Worksheets(1).Cells(intRow, 4) 'anpassen
arrValues(4, intRowU) = Worksheets(1).Cells(intRow, 5) 'anpassen
intRowU = intRowU + 1
End If
Next intRow
lstMultiCol.Column = arrValues
End Sub


Private Sub cmdWeiter_Click()
Unload Me
End Sub


Private Sub lstMultiCol_Click()
'Einträge aus mehrspaltiger Listbox in Tabelle
Dim i%, iRow%
iRow = Cells(Rows.Count, 5).End(xlUp).Row + 1
For i = 1 To 3
Cells(iRow, 4 + i) = Worksheets(1).Cells(lstMultiCol.ListIndex + 2, i)
Next i
End Sub

Anzeige
AW: Werte aus Listbox mit MultiSelect
21.01.2005 14:50:04
Josef
Hallo R. ?
Das kann man zB. so lösen!


      
Private Sub CommandButton1_Click()
Dim arr() As Variant
Dim n As Integer, i As Integer
i = -1
   
   
With ListBox1
   
'alle Einträge der Listbox durchlaufen
      For n = 0 To .ListCount - 1
      
'wenn Eintrag ausgewählt, dann
         If .Selected(n) Then
            i = i + 1
            
'Array neu dimensionieren
            ReDim Preserve arr(i)
            
'Eintrag an Array übergeben
            arr(i) = .List(n)
         
End If
      
Next
   
End With
   
'Array an Tabellenbereich übergeben
Range("A1:A" & UBound(arr) + 1) = Application.Transpose(arr)
End Sub 


Gruß Sepp
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Werte aus Listbox mit MultiSelect in Excel übertragen


Schritt-für-Schritt-Anleitung

Um Werte aus einer ListBox mit der Option MultiSelect in Excel zu übertragen, kannst Du die folgenden Schritte ausführen:

  1. Erstelle eine UserForm in Excel und füge eine ListBox hinzu. Setze die MultiSelect-Eigenschaft auf fmMultiSelectMulti für die Mehrfachauswahl.

  2. Füge einen CommandButton hinzu, um die ausgewählten Werte zu übertragen.

  3. Füge den folgenden VBA-Code in das Code-Modul der UserForm ein:

    Private Sub cmdInsert_Click()
       Dim arr() As Variant
       Dim n As Integer
       Dim i As Integer
    
       i = -1
       With ListBox1
           For n = 0 To .ListCount - 1
               If .Selected(n) Then
                   i = i + 1
                   ReDim Preserve arr(i)
                   arr(i) = .List(n)
               End If
           Next n
       End With
       Range("A1:A" & UBound(arr) + 1) = Application.Transpose(arr)
    End Sub
  4. Starte die UserForm und wähle mehrere Einträge in der ListBox aus. Klicke auf den Button, um die Werte in den Tabellenbereich A1:A(n) zu übertragen.


Häufige Fehler und Lösungen

  • Fehler: „Index außerhalb des Arrays“
    Lösung: Stelle sicher, dass Du die Array-Größe korrekt dimensionierst, insbesondere wenn Du die ReDim Preserve-Anweisung verwendest.

  • Fehler: „ListBox ist leer“
    Lösung: Überprüfe, ob Du der ListBox Werte zugewiesen hast, bevor Du die UserForm öffnest.

  • Problem mit der MultiSelect-Option:
    Lösung: Achte darauf, dass die MultiSelect-Eigenschaft der ListBox auf fmMultiSelectMulti gesetzt ist.


Alternative Methoden

Wenn Du die Werte in einer ListBox mit MultiSelect nicht über VBA übertragen möchtest, kannst Du auch die Datenüberprüfung oder Formeln verwenden, um eine dynamische Liste zu erstellen. Eine andere Möglichkeit besteht darin, eine HTML-Multiselect-Liste in einem Webbrowser zu verwenden, um die Auswahl zu treffen und die Werte in Excel zu importieren.


Praktische Beispiele

Hier ist ein Beispiel, wie Du die vba listbox multiselect in der Praxis einsetzen kannst:

Private Sub cmdTransfer_Click()
    Dim selectedValues As Collection
    Set selectedValues = New Collection

    Dim i As Integer
    For i = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(i) Then
            selectedValues.Add ListBox1.List(i)
        End If
    Next i

    Dim j As Integer
    For j = 1 To selectedValues.Count
        Cells(j, 1).Value = selectedValues(j)
    Next j
End Sub

Dieses Beispiel zeigt, wie man mit einer vba multiselect listbox die ausgewählten Werte in die Zellen der ersten Spalte überträgt.


Tipps für Profis

  • Nutze die ListIndex-Eigenschaft, um gezielt auf die ausgewählten Elemente zuzugreifen.
  • Schließe die UserForm, wenn Du alle Operationen abgeschlossen hast, um Ressourcen zu sparen.
  • Teste den Code in einer Excel-Version ab 2010, um sicherzustellen, dass alle Funktionen korrekt ausgeführt werden.

FAQ: Häufige Fragen

1. Wie aktiviere ich MultiSelect in einer ListBox?
Setze die MultiSelect-Eigenschaft der ListBox im Eigenschaftenfenster auf fmMultiSelectMulti.

2. Kann ich die Werte auch in eine andere Spalte übertragen?
Ja, ändere einfach den Zielbereich im Code, z.B. Range("B1:B" & UBound(arr) + 1).

3. Welche Excel-Version benötige ich für diese Funktionen?
Die genannten VBA-Funktionen sind ab Excel 2010 verfügbar.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige