Direkte Mehrfachauswahl aus Listenfeld
#1
Guten Tag,

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?


Viele Grüße,
Minkfeld
Top
#2
Hi,


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)
Top
#3
Hallo Minkfeld,

(09.03.2020, 14:41)Minkfeld schrieb: Hat jemand ne Idee wie ich das Ganze etwas komfortabler umsetzen lässt?

nimm eine ListBox.

Gruß Uwe
Top
#4
Hallo,



vielen Dank für die schnellen Antworten. Die Idee mit der ListBox werde ich mal ausprobieren.



Hatte beim Googeln vorhin noch folgendes gefunden (siehe Screenshot im Anhang)



Habt ihr ne Idee wie es hier gelöst wurde? Genauso hatte ich mir das vorgestellt.





Viele Grüße,

Minkfeld


Angehängte Dateien Thumbnail(s)
   
Top
#5
Hallo,

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?
Gruß Atilla
Top
#6
Hallo Attila,

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.


Viele Grüße,
Minkfeld


Angehängte Dateien
.xlsm   Dropdown mit Mehrfachauswahl.xlsm (Größe: 17,61 KB / Downloads: 6)
Top
#7
Hallo,

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.


.xlsm   Dropdown mit Mehrfachauswahl.xlsm (Größe: 37,71 KB / Downloads: 21)
Gruß Atilla
Top
#8
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.


Viele Grüße,
Minkfeld
Top
#9
Hallo,

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.
Gruß Atilla
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste