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

Mehrfachauswahl mittels VBA Userform

Forumthread: Mehrfachauswahl mittels VBA Userform

Mehrfachauswahl mittels VBA Userform
24.01.2015 02:45:03
dip
Hallo Allerseits,
Gerne würde ich folgende Problemstellung in das Forum einbringe, in der Hoffnung, jemand kennt die Lösung dazu :-)
Ich habe ein Excel Formular, in dem der Benutzer für verschiedene Felder einen Wert aus einer definierten Liste auswählen muss. Nun kann es sein, dass der Benutzer eine Mehrfachauswahl machen will. Damit mehrere Werte aus einer bestimmten Liste in nur einer Zelle erfasst werden, bedarf es wohl ein Makro.
Im nachfolgenden File
https://www.herber.de/bbs/user/95219.xlsx
habe ich den Sachverhalt entsprechend dargestellt.
Ich dachte, dass wenn der Benutzer die entsprechende Zelle doppelklickt, ein Formular geöffnet wird, in dem alle Auswahlmöglichkeiten stehen. Nun kann er die entsprechende Werte mittels dem Kontrollkästchen neben der jeweiligen Auswahlmöglichkeit anklicken. Nach dem er seine Angabe mit "OK" bestätigt, werden die ausgewählten Werte in die Zelle eingetragen (bei Mehrfachauswahl mit "/" getrennt). Und dies für alle Felder.
Zu beachten ist, dass mehr Felder hinzukommen können, d.h. es wäre ideal, wenn es lediglich ein Userform geben würde, und entsprechend der Zelle die anklickt wird, die Quelle der Auswahlmöglichkeiten im Blatt "Data" angepasst wird für das Userform.
Wäre dies so mittels VBA möglich?
Bin für jeden Tipp/Hilfe sehr dankbar!
Beste Grüsse
Patrick

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mehrfachauswahl mittels VBA Userform
24.01.2015 09:21:32
fcs
Hallo Patrick,
für eine Mehrfachauswahl ist eine Listbox besser geeignet als viele Checkboxen und in der Programmierung viel einfacher zu handhaben.
Im Blatt "Data" sollte zwischen den Spalten mit den Auswahldaten jeweils eine Spalte leer gelassen werden. Dann ist einfacher, die Daten zu sortieren.
Gruß
Franz

Die Datei https://www.herber.de/bbs/user/95222.xlsm wurde aus Datenschutzgründen gelöscht


Anzeige
AW: Mehrfachauswahl mittels VBA Userform
24.01.2015 15:52:36
dip
Guten Tag Franz,
Habe nur ein Wort für dich: Klasse!
die Lösung mit Listbox sieht wunderbar aus und funktioniert perfekt. Der Button für "Auswahl bereinigen" ist ein hilfreicher Zusatz.
Vielen Herzlichen Dank für Deine Hilfe und Aufmerksamkeit Franz!
Ich wünsche Dir noch ein schönes Wochenende.
Beste Grüsse
Patrick

Anzeige
Na dann doch erledigt! owT
24.01.2015 15:57:21
Luc:-?
:-?
;
Anzeige
Anzeige

Infobox / Tutorial

Mehrfachauswahl mittels VBA Userform in Excel


Schritt-für-Schritt-Anleitung

  1. Erstelle ein Userform:

    • Öffne den VBA-Editor (Alt + F11).
    • Gehe zu Einfügen > UserForm.
  2. Füge eine ListBox hinzu:

    • Wähle die ListBox aus der Toolbox und ziehe sie auf das Userform.
    • Stelle sicher, dass die ListBox auf die Mehrfachauswahl eingestellt ist. Setze die MultiSelect-Eigenschaft auf fmMultiSelectMulti.
  3. Füge Kontrollkästchen hinzu (optional):

    • Wenn du Checkboxen bevorzugst, füge diese anstelle der ListBox hinzu. Beachte, dass dies aber die Programmierung komplexer macht.
  4. Code zum Füllen der ListBox:

    • Füge den folgenden Code im Userform hinzu, um die ListBox mit Daten aus dem Arbeitsblatt "Data" zu füllen:

      Private Sub UserForm_Initialize()
      Dim ws As Worksheet
      Set ws = ThisWorkbook.Sheets("Data")
      Dim i As Long
      
      For i = 1 To ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
         ListBox1.AddItem ws.Cells(i, 1).Value
      Next i
      End Sub
  5. Code zum Übertragen der Auswahl:

    • Füge folgenden Code hinzu, um die Auswahl in die Zelle zu übertragen, wenn der Benutzer auf "OK" klickt:

      Private Sub btnOK_Click()
      Dim selectedItems As String
      Dim i As Long
      
      For i = 0 To ListBox1.ListCount - 1
         If ListBox1.Selected(i) Then
             selectedItems = selectedItems & ListBox1.List(i) & "/"
         End If
      Next i
      
      ' Entferne das letzte "/" und schreibe in die aktive Zelle
      If Len(selectedItems) > 0 Then
         selectedItems = Left(selectedItems, Len(selectedItems) - 1)
         ActiveCell.Value = selectedItems
      End If
      
      Unload Me
      End Sub
  6. Zelle doppelt klicken, um das Userform zu öffnen:

    • Füge im Arbeitsblattmodul folgenden Code hinzu, um das Userform beim Doppelklick auf eine Zelle zu öffnen:
      Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
      If Not Intersect(Target, Range("A1:A10")) Is Nothing Then ' Passen Sie den Bereich an
         UserForm1.Show
         Cancel = True
      End If
      End Sub

Häufige Fehler und Lösungen

  • Problem: "Dies kann nicht mit einer Mehrfachauswahl ausgeführt werden."

    • Lösung: Stelle sicher, dass die MultiSelect-Eigenschaft der ListBox korrekt gesetzt ist.
  • Problem: Die Auswahl wird nicht korrekt in die Zelle übertragen.

    • Lösung: Überprüfe, ob der Code im btnOK_Click-Ereignis korrekt implementiert ist.

Alternative Methoden

Falls du keine VBA-Programmierung verwenden möchtest, kannst du auch die Datenüberprüfung in Excel nutzen:

  1. Markiere die Zelle, in der die Auswahl erfolgen soll.
  2. Gehe zu Daten > Datenüberprüfung.
  3. Wähle Liste und gib die Optionen manuell ein. Beachte, dass dies keine Mehrfachauswahl ermöglicht.

Für komplexere Mehrfachauswahlen bietet sich die Verwendung von Checkboxen in einem Userform an, erfordert jedoch eine aufwendigere Programmierung.


Praktische Beispiele

Ein Beispiel für eine Excel Dropdown Mehrfachauswahl könnte sein, wenn du eine Liste von Projekten hast und mehrere auswählen möchtest, um sie in einer Zelle aufzulisten. Nutze die oben genannten Schritte, um ein Userform zu erstellen und die Auswahl in der Zelle zu speichern.


Tipps für Profis

  • Nutze Optionenfelder für eine exklusive Auswahl, wenn nur eine Option benötigt wird.
  • Teste deinen VBA Code regelmäßig, um sicherzustellen, dass alles reibungslos funktioniert.
  • Halte deinen Code modular, sodass du bei Änderungen nur spezifische Abschnitte anpassen musst.

FAQ: Häufige Fragen

1. Kann ich die ListBox anpassen? Ja, du kannst die Eigenschaften der ListBox im VBA-Editor anpassen, um das Design und Verhalten zu ändern.

2. Ist es möglich, die Auswahl in mehreren Zellen zu speichern? Ja, du kannst den Code anpassen, um die Auswahl in mehrere Zellen zu übertragen, indem du die aktive Zelle entsprechend modifizierst.

3. Welche Excel-Version benötige ich? Die Anleitung funktioniert ab Excel 2007 und höher, solange VBA unterstützt wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige