ich würde gerne aus einer Drop-Down Liste mehre Einträge auswählen und per Komma getrennt in eine Zelle schreiben. Leider habe ich dazu in Excel nichts passendes gefunden.
Aktuell nutze ich eine einfache Drop-Down Auswahlliste und mache die Mehfachauswahl bzw. das per Komma getrennt schreiben in eine Zelle über VBA. Jedoch muss ich für jeden zusätzlichen Eintrag die Drop-Down Liste erneut öffnen. Hat jemand ne Idee wie ich das Ganze etwas komfortabler umsetzen lässt?
Zitat:Leider habe ich dazu in Excel nichts passendes gefunden.
da gibt es auch nichts "Passendes". Ob es eine komplette VBA-Lösung gibt, müssen dir die Makrospezies sagen. Mit Bordmitteln könntest du höchstens deine Dropdown-Ergebnisse in Zellen untereinander eintragen und in der Nachbarspalte verketten.
Gruß Günter Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen. angebl. von Georg Christoph Lichtenberg (1742-1799)
Stell eine Beispielmappe ein, in der das gesamte Gerüst, so wie Du es haben möchtest, schon vorliegt. Das heiß, Tabelle mit Daten aus der die Listbox befüllt wird, Tabelle in die geschrieben werden soll, welche Spalten, die Listbox in einer Userform oder in einer Zelle nach betreten der Zelle?
anbei die Beispieltabelle. Ob die Listbox jetzt in der Userform oder beim betreten der Zelle geöffnet wird, ist egal. Ich persönlich würde die Variante ohne Userform bevorzugen.
im Anhang Deine Beispielmappe mit einer Listbox in einer Userform. Diese erscheint wenn eine Zelle im Gültigkeitsbereich ausgewählt wurde. Musste eine Userform sein, da sonst eine Mehrfachauswahl nicht machbar war.
10.03.2020, 11:02 (Dieser Beitrag wurde zuletzt bearbeitet: 10.03.2020, 11:03 von Minkfeld.)
Hallo Atilla,
vielen Dank - klappt super!
Ich habe noch zwei Verständnisfragen zum Code, damit ich in Zukunft entsprechende Änderungen selber machen kann:
1. Wo werden die Zellen definiert, deren Inhalte in der Userform zur Auswahl angezeigt werden? Über Datenüberprüfung=>Quelle scheint dies nicht mehr zu funktionieren.
2. Wo in dem Code bzw, über welchen Befehl wird der Inhalt in die Zelle geschrieben. Ich denke das passiert in dieser Funktion:
Code:
With Me.ListBox1 ' ReDim a(j) For i = 0 To .ListCount - 1 If .Selected(i) Then ReDim Preserve a(j) a(j) = .List(i) j = j + 1 End If Next i End With
Ich würde nämlich noch gerne einen "Default" Eintrag haben, falls nichts aus der Liste ausgewählt ist.
Du hattest den Bereich A2:A12 in der Tabelle List als "auswahl" definiert. Ich habe diesen Bereich auf A2:A1000 erweitert und "auswahl" so definiert, dass er sich nur auf die gefüllten Zellen bezieht. "auswahl" ist so dynamisch.
Wenn Du bei keiner Auswahl nach drücken der Ok Buttons generell einen Default Wert schreiben möchtest, dann änder den Code füür die Schaltfläche so:
Code:
Private Sub CommandButton1_Click() Dim i As Long, j As Long Dim a()
With Me.ListBox1 ' ReDim a(j) For i = 0 To .ListCount - 1 If .Selected(i) Then ReDim Preserve a(j) a(j) = .List(i) j = j + 1 End If Next i End With
With ActiveCell If j > 0 Then .Value = Join(a, ", ") .Offset(1, -1).Select Else .Value = "Default" .Offset(1, -1).Select End If End With
Unload Me End Sub
Das ist, die Stelle, Du richtig erkannt hast.
Statt "Default" im Code schreibst Du Deinen gewünschten wert rein, aber das erkennst Du ja selber.