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

Listbox MultiSelect Werte in Zelle übernehmen

Forumthread: Listbox MultiSelect Werte in Zelle übernehmen

Listbox MultiSelect Werte in Zelle übernehmen
12.08.2019 00:22:52
Asce
Hallo,
ich will aus einer Listbox die markierten Einträge (MultiSelect) in die Zelle einer _ Intelligenten Tabelle eintragen. Die Zeile ist die aktuell markierte, der Spaltenname ist im Tag der Listbox hinterlegt. Mit SingleSelect funktioniert das ohne Probleme, nur bei MultiSelect passiert nichts.

Private Sub CommandButton1_Click()
Intersect(Range("Tabelle1[" & ListBox1.Tag & "]"), ActiveCell. _
EntireRow) = ListBox1.Value

Hat da jemand eine Idee?
lg Asce
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox MultiSelect Werte in Zelle übernehmen
12.08.2019 05:39:35
Hajo_Zi
nach folgendem Prinzip.
        For LoI = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(LoI) Then
's = s & ListBox1.List(i)
' Beispiel nur Spalte 1
.Cells(LoLetzte + 1, 1) = ListBox1.List(LoI, 0)
LoLetzte = LoLetzte + 1
End If
Next LoI

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Werte aus Listbox MultiSelect in Zelle übernehmen


Schritt-für-Schritt-Anleitung

Um die markierten Werte aus einer Listbox mit MultiSelect in eine Zelle einer intelligenten Tabelle zu übertragen, kannst Du den folgenden VBA-Code verwenden. Stelle sicher, dass Du eine Listbox mit der Eigenschaft MultiSelect aktiviert hast:

  1. Öffne den Visual Basic for Applications (VBA) Editor in Excel (Alt + F11).
  2. Füge einen neuen UserForm oder ein Modul hinzu.
  3. Füge den folgenden Code in das CommandButton_Click-Ereignis ein:
Private Sub CommandButton1_Click()
    Dim LoI As Integer
    Dim LoLetzte As Long
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Tabelle1")

    LoLetzte = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row ' Letzte Zeile finden

    For LoI = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(LoI) Then
            ws.Cells(LoLetzte + 1, 1).Value = ListBox1.List(LoI, 0) ' Wert in die Zelle eintragen
            LoLetzte = LoLetzte + 1
        End If
    Next LoI
End Sub
  1. Teste die Funktion, indem Du die Listbox auswählst und den Button klickst.

Häufige Fehler und Lösungen

  • Fehler: Keine Werte werden in die Zelle geschrieben.

    • Lösung: Überprüfe, ob die MultiSelect-Eigenschaft der Listbox korrekt eingestellt ist. Stelle sicher, dass ListBox1 die richtigen Werte enthält und dass der Tag der Listbox dem Spaltennamen entspricht.
  • Fehler: Laufzeitfehler beim Ausführen des Codes.

    • Lösung: Überprüfe, ob der Bezug auf das Arbeitsblatt und die Zelle korrekt ist. Stelle sicher, dass die Tabelle existiert und dass Du die richtige Spalte ansprichst.

Alternative Methoden

Eine alternative Methode besteht darin, die Werte in ein Array zu speichern und dann in die Zelle zu schreiben. Dies kann bei einer großen Anzahl von Werten die Performance verbessern:

Private Sub CommandButton1_Click()
    Dim LoI As Integer
    Dim Werte() As String
    Dim i As Integer

    ReDim Werte(0 To ListBox1.ListCount - 1)

    For LoI = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(LoI) Then
            Werte(i) = ListBox1.List(LoI, 0)
            i = i + 1
        End If
    Next LoI

    ' Werte in die Zelle schreiben
    ThisWorkbook.Sheets("Tabelle1").Range("A1").Resize(i, 1).Value = Application.Transpose(Werte)
End Sub

Praktische Beispiele

Hier ist ein einfaches Beispiel für eine Listbox mit MultiSelect, die Wochentage auflistet und die Auswahl in eine Excel-Tabelle überträgt.

  1. Erstelle eine UserForm mit einer Listbox (ListBox1) und einem CommandButton (CommandButton1).
  2. Füge die Wochentage (Montag bis Sonntag) in die Listbox ein:
Private Sub UserForm_Initialize()
    ListBox1.AddItem "Montag"
    ListBox1.AddItem "Dienstag"
    ListBox1.AddItem "Mittwoch"
    ListBox1.AddItem "Donnerstag"
    ListBox1.AddItem "Freitag"
    ListBox1.AddItem "Samstag"
    ListBox1.AddItem "Sonntag"
End Sub
  1. Verwende den oben genannten Code im Click-Ereignis des CommandButtons, um die ausgewählten Tage in die Tabelle einzutragen.

Tipps für Profis

  • Verwende die ListIndex-Eigenschaft, um die aktuell ausgewählte Position der Listbox zu ermitteln.
  • Denke daran, die Listbox dynamisch zu befüllen, z. B. durch Daten aus einer Datenbank oder einer anderen Tabelle.
  • Implementiere Fehlerbehandlungen im VBA-Code, um unerwartete Probleme zu vermeiden.

FAQ: Häufige Fragen

1. Frage Wie kann ich die ausgewählten Werte in einer einzigen Zelle zusammenfassen?

Antwort: Du kannst die Werte in einer Schleife zu einem String zusammenfügen und diesen dann in die Zelle schreiben:

Dim s As String
s = ""
For LoI = 0 To ListBox1.ListCount - 1
    If ListBox1.Selected(LoI) Then
        s = s & ListBox1.List(LoI, 0) & ", "
    End If
Next LoI
If Len(s) > 0 Then
    s = Left(s, Len(s) - 2) ' Letztes Komma entfernen
End If
ActiveCell.Value = s

2. Frage Kann ich die Listbox auch mit Daten aus einer Excel-Tabelle füllen?

Antwort: Ja, das ist möglich. Du kannst die Werte aus einer Spalte einer Tabelle in die Listbox einfüllen, indem Du eine Schleife verwendest:

Dim i As Integer
For i = 1 To ThisWorkbook.Sheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row
    ListBox1.AddItem ThisWorkbook.Sheets("Tabelle1").Cells(i, 1).Value
Next i

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