Tipp: Andere Sprachen sind Google-Übersetzungen. Sie können die English Version dieses Links.
Einloggen
x
or
x
x
Registrieren
x

or

Wie erstelle ich eine Dropdown-Liste mit mehreren Auswahlmöglichkeiten oder Werten in Excel?

Wenn Sie in Ihrem Arbeitsblatt eine Datenüberprüfungs-Dropdownliste erstellen, können Sie standardmäßig nur ein Element pro Zeit in der Liste auswählen. Wenn Sie jedoch mehrere Werte in der Dropdown-Liste auswählen möchten, was würden Sie tun? In diesem Artikel zeigen wir Ihnen, wie Sie die Auswahl in der Dropdown-Liste verbessern können.

Erstellen Sie eine Dropdown-Liste mit mehreren Auswahlen mit VBA-Code


Sie interessieren sich für:

Kombinieren Sie mehrere Arbeitsblätter / Arbeitsmappen zu einem Arbeitsblatt / einer Arbeitsmappe:

Kombinieren Sie mehrere Arbeitsblätter oder Arbeitsmappen in einem einzigen Arbeitsblatt oder Arbeitsmappe kann eine große Aufgabe in Ihrer täglichen Arbeit sein. Aber wenn du es getan hast Kutools for Excel, sein mächtiger Nutzen - Kombinieren kann Ihnen helfen, mehrere Arbeitsblätter und Arbeitsmappen schnell zu einem Arbeitsblatt oder einer Arbeitsmappe zusammenzufassen.

Kutools for Excel enthält mehr als 300 praktische Excel-Tools. Kostenlos zu testen, ohne Einschränkung in 60 Tagen. Mehr Laden Sie jetzt die kostenlose Testversion herunter



Erstellen Sie eine Dropdown-Liste mit mehreren Auswahlen mit VBA-Code

Mit der VBA-Methode kann Ihre Dropdown-Liste mehrere Werte anstelle von einem in Ihrem Arbeitsblatt auswählen.

1. Nachdem Sie Ihre Dropdown-Liste erstellt haben, befindet sich beispielsweise Ihre Dropdown-Liste in "leaf1", klicken Sie mit der rechten Maustaste auf die Registerkarte "Sheet1" und klicken Sie auf Code anzeigen im Kontextmenü. Siehe Screenshot:

2. In dem Microsoft Visual Basic für Applikationen Fenster, doppelklicken Sie auf den Sheet1, um den Code-Editor zu öffnen, kopieren Sie dann den folgenden VBA-Code und fügen Sie ihn in den Editor ein. Siehe Screenshot:

VBA-Code: Dropdown-Liste mit mehreren Auswahlmöglichkeiten

Private Sub Worksheet_Change(ByVal Target As Range)
    'Updated: 2016/4/12
    Dim xRng As Range
    Dim xValue1 As String
    Dim xValue2 As String
    If Target.Count > 1 Then Exit Sub
    On Error Resume Next
    Set xRng = Cells.SpecialCells(xlCellTypeAllValidation)
    If xRng Is Nothing Then Exit Sub
    Application.EnableEvents = False
    If Not Application.Intersect(Target, xRng) Is Nothing Then
        xValue2 = Target.Value
        Application.Undo
        xValue1 = Target.Value
        Target.Value = xValue2
        If xValue1 <> "" Then
            If xValue2 <> "" Then
                If xValue1 = xValue2 Or _
                   InStr(1, xValue1, ", " & xValue2) Or _
                   InStr(1, xValue1, xValue2 & ",") Then
                    Target.Value = xValue1
                Else
                    Target.Value = xValue1 & ", " & xValue2
                End If
            End If
        End If
    End If
    Application.EnableEvents = True
End Sub

3. Dann klick Datei > Schließen und zurück zu Microsoft Excel Beenden Microsoft Visual Basic für Applikationen Fenster.

4. Gehen Sie zu der Dropdown-Liste, die Sie erstellt haben. Sie können mehrere Werte aus der Liste auswählen, wie im Screenshot gezeigt.

Notizen:

1. Doppelte Werte sind in der Dropdown-Liste nicht zulässig.

2. Der VBA-Code kann nur für die aktuell geöffnete Arbeitsmappe funktionieren. Wenn Sie die Arbeitsmappe schließen und erneut öffnen, wird der VBA-Code automatisch aus Ihrem Arbeitsblatt entfernt und die Mehrfachauswahl ist nicht mehr verwendbar. Daher müssen Sie die Arbeitsmappe als Excel Macro-Enabled Workbook-Format speichern, wenn Sie Ihre Arbeitsmappe speichern.


In Verbindung stehende Artikel:



Empfohlene Produktivitätswerkzeuge für Excel

Kutools for Excel hilft Ihnen, Ihre Arbeit immer im Voraus zu erledigen und sich von der Masse abzuheben

  • Mehr als 300 leistungsstarke erweiterte Funktionen, die für 1500-Arbeitsszenarien entwickelt wurden und die Produktivität um 70% steigern, geben Ihnen mehr Zeit, sich um Ihre Familie zu kümmern und das Leben zu genießen.
  • Sie müssen keine Formeln und VBA-Codes mehr auswendig lernen. Geben Sie Ihrem Gehirn eine Pause.
  • Werden Sie ein Excel-Experte in 3 Minuten. Komplizierte und wiederholte Operationen können in Sekunden durchgeführt werden.
  • Reduzieren Sie jeden Tag Tausende von Tastatur- und Mausoperationen und verabschieden Sie sich jetzt von Berufskrankheiten.
  • 110,000 hochwirksame Mitarbeiter und 300 + weltweit renommierte Unternehmen.
  • Kostenlose Testversion für 60-Tage mit allen Funktionen. Geld-zurück-Garantie für 60-Tage. 2 Jahre kostenloses Upgrade und Support.

Bringt das Browsen und Bearbeiten von Registerkarten in Microsoft Office, das weitaus leistungsstärker ist als die Registerkarten des Browsers

  • Die Registerkarte "Office" wurde für Word, Excel, PowerPoint und andere Office-Anwendungen entwickelt: Publisher, Access, Visio und Project.
  • Öffnen und erstellen Sie mehrere Dokumente in neuen Registerkarten desselben Fensters und nicht in neuen Fenstern.
  • Steigert Ihre Produktivität um 50% und reduziert täglich Hunderte von Mausklicks für Sie!
Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Jennifer L Price · 3 years ago
    I was able to get the code to work, but then when I saved the document (with macros-enabled), closed it and returned, the code didn't work anymore (though it was still in there). I can't figure out what I've done wrong. Any ideas?
  • To post as a guest, your comment is unpublished.
    CynthiaB · 3 years ago
    Hi. Thank you for the code and the addition to limit duplicates.


    One more request - what addition/change would have to be made in order to allow multiple selection in only one or two specific columns? This code is re-adding lines of text to what should be 'plain' cells if I go to correct a typo, or make a change or addition to the text in the cell, as opposed to just behaving 'normally' and accepting the change (without re-adding the entire text again).

    For instance, column A is a 'plain' column. I write a sentence "What are the three itmes you want most?" Column B is a 'list' column where I only want to be able to pick one single value (in this case, let's say a child's name). Column C is another 'list' column where the user must be able to select multiple items (which this code allows me to do perfectly).

    As I go along, I realize that I've made a typo in column A and want to correct it. As this code stands, if I go in (double click, F2) and make the correction to the word "items", I end up with this result in my cell:"What are the three itmes you want most? What are the three items you want most?"

    thank you in advance for any help (from a user that REALLY likes VBA, but is still at the very earliest stages of learning!)
  • To post as a guest, your comment is unpublished.
    Mervyn · 3 years ago
    Just realised I didn't exit the loop in the new function if the condition has been set so we don't have to check other entries.
  • To post as a guest, your comment is unpublished.
    Mervyn · 3 years ago
    You can change the code in the following lines to prevent the duplicates:
    If xValue2 "" Then
    Target.Value = xValue1 & ", " & xValue2
    End If

    To:
    If xValue2 "" Then
    If CheckIfAlreadyAdded(xValue1, xValue2) = False Then
    Target.Value = xValue1 & ", " & xValue2
    Else
    Target.Value = xValue1
    End If
    End If

    And then add the following function:
    Private Function CheckIfAlreadyAdded(ByVal sText As String, sNewValue As String) As Boolean

    CheckIfAlreadyAdded = False

    Dim WrdArray() As String
    WrdArray() = Split(sText, ",")

    For i = LBound(WrdArray) To UBound(WrdArray)
    If Trim(WrdArray(i)) = Trim(sNewValue) Then CheckIfAlreadyAdded = True
    Next i

    End Function

    --
    There's probably better ways of coding it but it works for now.
  • To post as a guest, your comment is unpublished.
    MichaelB · 3 years ago
    It is great that this allows multiple selections but like @Yezdi commented, I am finding it will add one or several duplicates even if I don't choose them.

    So, at present, this is an 80% solution... one tweak away from perfect. I am not a VB coder or I'd offer the solution.