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

Listbox Mehrfachauswahl wiedergeben

Forumthread: Listbox Mehrfachauswahl wiedergeben

Listbox Mehrfachauswahl wiedergeben
Tibo
Hallo liebe Excel-Profis,
ich habe ein Problem mit der Programmierung eines Makros für Excel.
Die Problemstellung ist dabei folgendermaßen:
Ich habe ein Listenfeld in Excel das einen bestimmten (einspaltigen) Bereich ausließt. Dieses Listenfeld ist entweder über die Toolbar Formular oder über die Toolbar Steuerelemente-Toolbox eingefügt (welches der beiden Listenfeldarten im Endeffekt genutzt wird ist mir gleich, aber wahrscheinlich für die Programmierung des Makros relevant).
Die Markierungsart des Listenfeldes sollte auf jeden Fall mehrfach sein, d.h. es sollen gleichzeitig mehrere Werte markiert werden können.
Schließlich sollen die markierten Werte (es kann sich dabei um Zahlen oder Text handeln) in eine Spalte übertragen werden, also nicht alles in eine Zelle, sondern untereinander (am Besten ohne Zwischenzellen). Die auszulesenden Daten befinden sich im Tabellenblatt (Berechnungsgrundlagen) und beginnen in zelle b5 und dann mit offenem Ende nach unten. Wiedergegeben werden sollen die markierten Daten aus dem Listenfeld in die Zelle c5 dynamisch nach unten offen (in Berechnungsgrundlagen). Das Listenfeld selber liegt im Tabellenblatt (Analyse).
Also, ich weiss es hört sich komplizierter an als es für euch ist :-) Wenn ihr noch ergänzende Infos braucht kein Problem, liefer ich sofort.
Übrigens, je nachdem was besser funktioniert, ich bin sowohl für eine click-Lösung (die auf das Listenfeld gelegt wird) als auch für eine command-button-Lösung offen!
Ich danke schonmal im Voraus für alle Antworten!
Mfg
Tibo
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Listbox Mehrfachauswahl wiedergeben
22.02.2010 15:15:27
Rudi
Hallo,
mit Commandbutton. Listbox aus Steuerelemente.
in Tab Analyse:
Private Sub CommandButton1_Click()
Dim oTmp As Object, i As Long
Set oTmp = CreateObject("Scripting.dictionary")
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) Then oTmp.Add ListBox1.List(i), "x"
Next
Sheets("Berechnungsgrundlagen").Cells(5, 3).Resize(oTmp.Count) = _
WorksheetFunction.Transpose(oTmp.keys)
End Sub

Private Sub Worksheet_Activate()
ListBox1.MultiSelect = fmMultiSelectMulti
With Sheets("Berechnungsgrundlagen")
ListBox1.List = .Range(.Cells(5, 2), .Cells(5, 2).End(xlDown)).Value
End With
End Sub

Listbox wird befüllt, wenn Analyse aktiviert wird.
Gruß
Rudi
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Listbox Mehrfachauswahl in Excel einrichten


Schritt-für-Schritt-Anleitung

Um ein Listenfeld für Mehrfachauswahl in Excel einzurichten und die markierten Werte in eine Spalte zu übertragen, folge diesen Schritten:

  1. Erstelle ein Listenfeld:

    • Füge ein Listenfeld in deinem Arbeitsblatt ein. Du kannst entweder die Toolbar Formular oder die Toolbar Steuerelemente-Toolbox verwenden.
  2. Setze die Eigenschaften des Listenfelds:

    • Wähle das Listenfeld aus und stelle sicher, dass die MultiSelect-Eigenschaft auf fmMultiSelectMulti gesetzt ist. Dies ermöglicht die Mehrfachauswahl.
  3. Füge einen CommandButton hinzu:

    • Platziere einen CommandButton im Arbeitsblatt, das dein Listenfeld enthält.
  4. Füge den VBA-Code ein:

    • Klicke mit der rechten Maustaste auf den CommandButton und wähle "Code anzeigen". Füge den folgenden VBA-Code ein:
    Private Sub CommandButton1_Click()
       Dim oTmp As Object, i As Long
       Set oTmp = CreateObject("Scripting.dictionary")
       For i = 0 To ListBox1.ListCount - 1
           If ListBox1.Selected(i) Then oTmp.Add ListBox1.List(i), "x"
       Next
       Sheets("Berechnungsgrundlagen").Cells(5, 3).Resize(oTmp.Count) = _
       WorksheetFunction.Transpose(oTmp.keys)
    End Sub
  5. Aktiviere das Listenfeld beim Öffnen:

    • Füge den folgenden Code in das Codefenster des Arbeitsblatts ein, das das Listenfeld enthält:
    Private Sub Worksheet_Activate()
       ListBox1.MultiSelect = fmMultiSelectMulti
       With Sheets("Berechnungsgrundlagen")
           ListBox1.List = .Range(.Cells(5, 2), .Cells(5, 2).End(xlDown)).Value
       End With
    End Sub
  6. Teste die Funktion:

    • Wechsle zu dem Arbeitsblatt, das das Listenfeld enthält, wähle mehrere Werte aus und klicke auf den CommandButton. Die ausgewählten Werte sollten in die Spalte C ab Zelle C5 des Arbeitsblatts "Berechnungsgrundlagen" übertragen werden.

Häufige Fehler und Lösungen

  • Fehler: Listenfeld zeigt keine Werte an.

    • Lösung: Stelle sicher, dass die Zellen, aus denen die Werte geladen werden, korrekt angegeben sind. Überprüfe die Range im Code.
  • Fehler: Werte werden nicht richtig übertragen.

    • Lösung: Überprüfe, ob die MultiSelect-Eigenschaft des Listenfelds korrekt gesetzt ist.
  • Fehler: CommandButton funktioniert nicht.

    • Lösung: Stelle sicher, dass das VBA-Makro aktiviert ist und dass du die richtige Schaltfläche verwendest.

Alternative Methoden

Wenn du eine andere Methode bevorzugst, kannst du auch ein Formularsteuerelement verwenden, um eine Mehrfachauswahl zu ermöglichen. Hierbei kannst du die gleichen Schritte durchführen, jedoch die Eigenschaften des Formularsteuerelements anpassen.


Praktische Beispiele

Ein praktisches Beispiel könnte die Erstellung eines Listenfeldes für Mehrfachauswahl in Excel sein, um verschiedene Produkte auszuwählen, die in einer Bestellung erscheinen sollen. Die ausgewählten Produkte werden dann automatisch in einer Liste auf einem anderen Blatt übertragen.


Tipps für Profis

  • Nutze die Scripting.Dictionary-Objekte, um die Auswahl effizient zu verwalten.
  • Teste immer deinen Code in einer Kopie deiner Arbeitsmappe, um unerwünschte Änderungen zu vermeiden.
  • Halte deinen VBA-Code sauber und kommentiere wichtige Abschnitte, um die Wartung zu erleichtern.

FAQ: Häufige Fragen

1. Kann ich das Listenfeld auch in einer älteren Excel-Version nutzen?
Ja, die beschriebenen Schritte sollten auch in älteren Versionen von Excel funktionieren, solange du Zugriff auf die VBA-Umgebung hast.

2. Wie kann ich die Auswahl im Listenfeld zurücksetzen?
Du kannst dies tun, indem du eine weitere Schaltfläche hinzufügst, die den ListBox1.Selected-Wert auf False für alle Einträge setzt.

3. Ist es möglich, die Auswahl in einer Dropdown-Liste anzuzeigen?
Ja, du kannst ein Kombinationsfeld verwenden, um eine ähnliche Funktionalität zu erreichen, jedoch ist die Mehrfachauswahl eingeschränkt.

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