Die Multiselect-Eigenschaft in Excel VBA ermöglicht es einem Benutzer, mehrere Elemente in einem Listenfeld auswählen. Die Userform werden wir aussehen wie folgt erstellen:

Multiple List Box Selections in Excel VBA

Um diese Userform zu erstellen, führen Sie die folgenden Schritte.

  1. Öffnen Sie den Visual Basic-Editor. Wenn das Projekt-Explorer nicht sichtbar ist, klicken Sie auf Ansicht, Projekt-Explorer.

  2. Klicken Sie auf Einfügen, Benutzerformular. Wenn die Toolbox nicht automatisch angezeigt wird, klicken Sie auf Ansicht, Toolbox. Ihr Bildschirm sollte wie unten aufgebaut werden.

Userform Screen Setup in Excel VBA

  1. die Listenfelder hinzufügen (zuerst links an, die zweite auf der rechten Seite) unten, Befehlsschaltflächen, Kontrollkästchen (erste auf der linken Seite, der zweite auf der rechten Seite), Rahmen und Optionstasten (erste an der Spitze, die zweite die erste, und so weiter). Sobald dies abgeschlossen ist, sollte das Ergebnis mit dem Bild von der Userform gezeigt früher konsistent sein. Erstellen Sie zum Beispiel auf ListBox aus der Toolbox ein Listenfeld, indem Sie auf. Als nächstes können Sie ein Listenfeld auf dem Benutzerformular ziehen. Wenn Sie an der ‚Select Type‘ Rahmen ankommen, denken Sie daran zuerst diesen Rahmen zu ziehen, bevor Sie die drei Optionsfelder in sie setzen.

  2. Sie können die Namen ändern und die Beschriftungen der Kontrollen. Die Namen werden in dem Excel-VBA-Code verwendet. Bildunterschriften sind diejenigen, die auf dem Bildschirm angezeigt. Es empfiehlt sich, die Namen der Kontrollen zu ändern, aber es ist hier nicht notwendig, da wir nur wenige Kontrollen in diesem Beispiel haben. Um die Beschriftung des Userform zu ändern, Befehlsschaltflächen, Kontrollkästchen, Rahmen und Optionsfelder, klicken Sie auf Ansicht, Eigenschaften-Fenster und klicken Sie auf jede Kontrolle.

  3. die Userform zu zeigen, eine Befehlsschaltfläche auf dem Arbeitsblatt platzieren und die folgende Codezeile hinzu:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Wir werden jetzt die Sub UserForm_Initialize zu erstellen. Wenn Sie die Show-Methode für die Userform verwenden, wird diese Unter automatisch ausgeführt werden.

  1. Öffnen Sie den Visual Basic-Editor.

  2. Geben Sie in dem Projekt-Explorer direkt auf UserForm1 und klicken Sie dann auf Code anzeigen klicken.

  3. Zunächst erklärt die Variable i vom Typ Integer. Deklarieren Sie die Variable in der allgemeinen Deklarationsbereich (an der Spitze des Codes). Auf diese Weise müssen Sie nur die Variable deklarieren einmal und Sie können sie in mehrere U-Boote verwenden.

Dim i As Integer

Wählen Sie Userform aus der linken Dropdown-Liste 9.. Wählen Sie Initialisieren von der rechten Dropdown-Liste.

  1. Fügen Sie die folgenden Codezeilen:

Private Sub UserForm_Initialize()

With ListBox1

.AddItem "Sales"

.AddItem "Production"

.AddItem "Logistics"

.AddItem "Human Resources"

End With

OptionButton3.Value = True

End Sub

Erläuterung: das erste Listenfeld gefüllt wird und die dritte Option-Taste wird als Standard festgelegt.

Wir haben nun den ersten Teil der Userform erstellt. Obwohl es schon ordentlich aussieht, wird noch nichts geschehen, wenn wir die Befehlsschaltflächen oder die anderen Steuerelemente klicken.

  1. In dem Projekt-Explorer, klicken Sie doppelt auf UserForm1.

  2. Klicken Sie doppelt auf die Schaltfläche Hinzufügen.

  3. Fügen Sie die folgenden Codezeilen:

Private Sub CommandButton1_Click()

For i = 0 To ListBox1.ListCount - 1

If ListBox1.Selected(i) = True Then ListBox2.AddItem ListBox1.List(i)

Next i

End Sub

Erläuterung: Excel VBA Schleifen durch das erste Listenfeld (Listenindexzahl von Null (0) für den ersten Eintrag in der Liste) und, falls ausgewählt, fügt das Element in der zweiten Liste.

  1. Klicken Sie doppelt auf die Schaltfläche Entfernen.

  2. Fügen Sie die folgenden Codezeilen:

Private Sub CommandButton2_Click()

Dim counter As Integer

counter = 0

For i = 0 To ListBox2.ListCount - 1

If ListBox2.Selected(i - counter) Then

ListBox2.RemoveItem (i - counter)

counter = counter + 1

End If

Next i

CheckBox2.Value = False

End Sub

Erläuterung: Excel-VBA-Schleifen durch das zweite Listenfeld und, falls gewählt, entfernt das Element. Die Zählvariable hält Spur der Anzahl der entfernten Gegenstände.

  1. Klicken Sie doppelt auf die erste Option-Taste.

  2. Fügen Sie die folgenden Codezeilen:

Private Sub OptionButton1_Click()

ListBox1.MultiSelect = 0

ListBox2.MultiSelect = 0

End Sub
  1. Klicken Sie doppelt auf die zweite Option-Taste.

  2. Fügen Sie die folgenden Codezeilen:

Private Sub OptionButton2_Click()

ListBox1.MultiSelect = 1

ListBox2.MultiSelect = 1

End Sub
  1. Klicken Sie doppelt auf die dritte Option-Taste.

  2. Fügen Sie die folgenden Codezeilen:

Private Sub OptionButton3_Click()

ListBox1.MultiSelect = 2

ListBox2.MultiSelect = 2

End Sub

Erläuterung: Die Einstellung ‚Select Type‘ kann durch Klicken auf die Optionstasten ausgewählt werden. Das Bild von der Userform gezeigt früher gibt eine Beschreibung der einzelnen Einstellungen. Statt diese Einstellung zur Laufzeit konfigurieren, können Sie diese Einstellung auch zur Entwurfszeit konfigurieren. Um dies zu erreichen, die rechte Maustaste auf einem Listenfeld-Steuerelement, und klicken Sie dann auf Eigenschaften. Legen Sie die Multiselect-Eigenschaft auf 0 – fmMultiSelectSingle, 1 – fmMultiSelectMulti oder 2 – fmMultiSelectExtented.

  1. Klicken Sie doppelt auf das erste Kontrollkästchen.

  2. Fügen Sie die folgenden Codezeilen:

Private Sub CheckBox1_Click()

If CheckBox1.Value = True Then

For i = 0 To ListBox1.ListCount - 1

ListBox1.Selected(i) = True

Next i

End If

If CheckBox1.Value = False Then

For i = 0 To ListBox1.ListCount - 1

ListBox1.Selected(i) = False

Next i

End If

End Sub

Erläuterung: durch das erste Kontrollkästchen Überprüfung, alle Elemente des ersten Listenfeld ausgewählt / abgewählt werden.

  1. Klicken Sie doppelt auf das zweite Kontrollkästchen die gleichen Codezeilen hinzuzufügen.

Nur Ersatz CheckBox1 mit checkbox2 und ListBox1 mit ListBox2.