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

Listbox mit Mehrfachauswahl - Werte auslesen

Forumthread: Listbox mit Mehrfachauswahl - Werte auslesen

Listbox mit Mehrfachauswahl - Werte auslesen
21.08.2013 22:43:07
Andy
Hallo Ihr,
ich habe eine für viele von Euch vermutlich relativ einfache Frage:
Ich habe eine Listbox (Listenfeld der ActiveX Steuerelement), die von den Werten in der Spalte A (bspw. "A", "B", "C", "D",......) gefüllt werden. Nun möchte ich eine Mehrfachauswahl in der Listbox machen und hätte die Werte dann bspw. in Spalte C nach und nach aufgeführt. Wähle ich also "B" und "D", so soll in C1 das "B" stehen und in C2 das "D".
Ich habe viel zu dem Thema gefunden, aber noch nicht das richtige. Kann mir jemand weiterhelfen? Nachfolgend der Link zu dem Beispiel wie ich es derzeit habe.
https://www.herber.de/bbs/user/86971.xlsm
Vielen, vielen Dank vorab.
Andy

Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
ListBox1.Selected(i) ...
21.08.2013 23:21:30
Matthias
Hallo Andy
Für Deine Bsp.Daten so:
Option Explicit
Private Sub ListBox1_Change()
Dim Zeile&, i&
Range("C1:C5").ClearContents
For i = 0 To 4
If ListBox1.Selected(i) = True Then
Zeile = Zeile + 1
Cells(Zeile, 3).Value = ListBox1.List(i)
End If
Next i
End Sub
Gruß Matthias

Anzeige
AW: ListBox1.Selected(i) ...
22.08.2013 07:37:15
Andy
Exzellent! Funktioniert wunderbar. Vielen Dank Matthias!!!
Andy

Danke für die Rückmeldung ... kwT
22.08.2013 07:38:51
Matthias

AW: Danke für die Rückmeldung ... kwT
22.08.2013 15:03:58
Andy
Ich muss das Thema noch einmal aufgreifen und hoffe Du, Matthias, liest meine Nachricht.
Alles klappt nun wunderbar, aber nun ist mir aufgefallen, dass wenn ich bereits Begriffe in der Listbox arkiert habe, diese Markierungen wieder verschwinden sobald ich die Sprache umstelle und in der Listbox nun die Übersetzungen stehen. Ein Beispiel:
Ich wähle in der Liste "Haus" aus und an anderer Stelle meiner Datei verwende ich die Info Haus. Schalte ich meine gesamte Tabelle auf "English" um (mache ich via WVERWEIS), so erscheint in der Listbox nun "House" statt "Haus" und (hier liegt mein Problem) meine Markierung dieses Begriffes geht verloren. Hast Du oder habt Ihr eine Idee?
Gruß.
Andy

Anzeige
AW: Danke für die Rückmeldung ... kwT
22.08.2013 15:46:06
grassshopper
Hole mit Sprachwechsel zuerst den Index der markierten Zeile
aktuellerIndex = Me.ListBox1.ListIndex
Nach Sprachwechsel kannst Du dann die Markierung auf diesen Index setzen
Me.ListBox1.ListIndex = aktuellerIndex
Klappt das?
Gruß,
grassshopper

AW: Danke für die Rückmeldung ... kwT
22.08.2013 16:44:04
Andy
Hallo grassshopper,
Dank Dir für die schnelle Antwort, aber ich glaube Du musst mir anhand einem Beispiel zeigen wo ich die von Dir erwähnten Markierungen einsetzen muss. Anbei findest Du ein Beispiel, bei dem die Markierungen verschwinden sobald ich die Sprache umstelle.
https://www.herber.de/bbs/user/86986.xlsm
Dank Dir vorab.
Andy

Anzeige
es geht ja um Mehrfachauswahl
23.08.2013 11:09:47
Matthias
Hallo
Bei Mehrfachauswahl hilft das also nichts.
Andy will ja nach der Umstellung der Sprache
die bereits selektierten Einträge wiederherstellen bzw. behalten.
Ist also Index(1) und Index(3) markiert(Selected) also Eintrag(2)und Eintrag(4)
so sollen nach Umstellung der Sprache diese Einträge wieder markiert werden.
Dazu müsste man die Indexwerte z.B. in eine Tabelle schreiben
und später über eine Schleife zurückschreiben.
Gruß Matthias

Anzeige
AW: es geht ja um Mehrfachauswahl
23.08.2013 15:24:02
Andy
Hallo Matthias,
hast Du eine Idee wie es funktionieren kann? Ich hatte eine Beispieldatei bereits hochgeladen:
https://www.herber.de/bbs/user/86986.xlsm
Dir ein gutes Wochenende.
Andy

AW: es geht ja um Mehrfachauswahl
25.08.2013 20:44:05
Matthias
Hallo
Zitat
hast Du eine Idee wie es funktionieren kann?
Die hatte ich ja bereits gepostet.


Dazu müsste man die Indexwerte z.B. in eine Tabelle schreiben o.Ä.
Später dann evtl. über eine Schleife zurückschreiben.
Probieren musst Du das erst mal selbst.
Gruß Matthias
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Listbox mit Mehrfachauswahl in Excel - Werte auslesen


Schritt-für-Schritt-Anleitung

  1. Erstelle eine ListBox in Excel:

    • Füge ein ActiveX-Steuerelement hinzu, indem Du auf "Entwicklertools" > "Einfügen" > "ListBox" klickst.
  2. Befülle die ListBox mit Werten aus Spalte A:

    • Verwende folgenden VBA-Code in der entsprechenden Worksheet- oder UserForm-Module:
      Private Sub UserForm_Initialize()
      Dim i As Integer
      For i = 1 To 4 ' Anzahl der Werte in Spalte A
         ListBox1.AddItem Cells(i, 1).Value
      Next i
      End Sub
  3. Aktiviere die Mehrfachauswahl in der ListBox:

    • Setze die Eigenschaft MultiSelect auf fmMultiSelectMulti in den Eigenschaften der ListBox.
  4. Lese die ausgewählten Werte aus:

    • Nutze den folgenden Code, um die Werte in Spalte C zu schreiben:
      Private Sub ListBox1_Change()
      Dim Zeile As Integer, i As Integer
      Range("C1:C5").ClearContents
      Zeile = 0
      For i = 0 To ListBox1.ListCount - 1
         If ListBox1.Selected(i) Then
             Zeile = Zeile + 1
             Cells(Zeile, 3).Value = ListBox1.List(i)
         End If
      Next i
      End Sub

Häufige Fehler und Lösungen

  • Problem: Die Werte in der ListBox werden nicht angezeigt.

    • Lösung: Stelle sicher, dass der Code zur Befüllung der ListBox im UserForm_Initialize-Ereignis platziert ist.
  • Problem: Ausgewählte Werte verschwinden bei einem Sprachwechsel.

    • Lösung: Speichere die Indizes der ausgewählten Elemente vor dem Wechsel und setze sie danach wieder:
      Dim aktuellerIndex As Integer
      aktuellerIndex = Me.ListBox1.ListIndex
      ' Sprachwechsel hier
      Me.ListBox1.ListIndex = aktuellerIndex

Alternative Methoden

  1. Verwendung eines Word-Kombinationsfeldes:

    • In Word kannst Du ein Kombinationsfeld für Mehrfachauswahl implementieren, indem Du ActiveX-Steuerelemente verwendest. Der Ansatz ist ähnlich wie in Excel, erfordert jedoch Anpassungen im Code.
  2. Word Dropdown für Mehrfachauswahl ohne VBA:

    • Nutze Inhaltssteuerelemente, um eine Dropdown-Liste zu erstellen, in der Benutzer mehrere Optionen auswählen können, auch ohne VBA.

Praktische Beispiele

  • Beispiel 1: Auswahl von Farben:

    • Füge Farben in Spalte A ein und nutze die ListBox, um mehrere Farben auszuwählen und die Auswahl in Spalte C zu speichern.
  • Beispiel 2: Auswahl von Produkten:

    • Erstelle ein Listenfeld für Mehrfachauswahl mit Produktnamen. Wähle mehrere Produkte aus und schreibe sie in eine andere Spalte.

Tipps für Profis

  • Dynamische ListBox-Befüllung:

    • Anstatt feste Werte in die ListBox einzufügen, kannst Du die Werte dynamisch aus einer Datenquelle abrufen (z.B. Datenbank oder externe Datei).
  • Benutzerdefinierte Formate:

    • Nutze Formatierungen in der ListBox, um die Anzeige der Optionen zu verbessern, z.B. durch Hinzufügen von Icons oder Farben.

FAQ: Häufige Fragen

1. Wo finde ich das Listenfeld für Mehrfachauswahl? Das Listenfeld für Mehrfachauswahl findest Du unter den ActiveX-Steuerelementen im Entwicklertools-Tab.

2. Kann ich ein Listenfeld für Mehrfachauswahl in Word verwenden? Ja, Du kannst ein Listenfeld für Mehrfachauswahl in Word erstellen, indem Du ActiveX-Steuerelemente nutzt oder Inhaltssteuerelemente anwendest.

3. Funktioniert der Code in Excel 2016? Ja, die bereitgestellten Codes funktionieren in Excel 2016 und neueren Versionen. Achte darauf, dass die Entwicklertools aktiviert sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige