Die ListBox-Komponente ist eine sehr nützliche Komponente in VBA, denn sie stellt alle Funktionalitäten zur Verfügung, um mit Listen arbeiten zu können und diese in der grafischen Oberfläche anzeigen zu können. Dieser Artikel beschreibt die Grundlagen der Benutzung.
Was ist die ListBox-Komponente?
Eine Listbox kann Elemente unterschiedlicher Art enthalten. Wir möchten in diesem Artikel nur Strings, also Zeichenketten darin speichern. Das genügt, um die grundlegende Funktionsweise zu verstehen. Die Listbox enthält also Elemente, Items. Das ist wichtig für das Verständnis: Alle Eigenschaften, die sich auf die Listbox selbst beziehen, finden Sie in der ListBox selbst. Die ListBox hat noch eine Eigenschaft namens Items. Diese enthält alle Eigenschaften und Methoden, welche sich auf die Elemente in der Liste beziehen.
Im Folgenden stelle ich einige wichtige Funktionen und Eigenschaften der ListBox und ihrer Elemente vor. Es gibt natürlich noch wesentlich mehr, aber Sie sollten durch diesen Artikel einen Überblick über die wichtigsten Möglichkeiten der Listbox erhalten.
Um die Erklärungen nachvollziehen zu können, erstellen Sie ein neues Projekt mit einer Listenbox. Dieser geben Sie den Namen myListBox.
Ein Element einfügen
Um ein Element in die Liste einzufügen, gibt es zwei Funktionen:
- Items.Add()
- Items.Insert()
Die Methode add() fügt ein neues Element ans Ende der Liste ein. Um in unsere Beispielliste einige Städte einzufügen, rufen wir also folgende Methoden auf:
myListBox.Items.Add("Berlin")
myListBox.Items.Add("Madrid")
myListBox.Items.Add("Montpellier")
myListBox.Items.Add("London")
Wichtig ist dabei, dass keinerlei Ordnung eingehalten wird. Die Elemente werden einfach unten angehängt. Erstellen Sie eine Schaltfläche und schreiben Sie den obigen Code ins Klick-Ereignis. Nachdem Sie auf die Schaltfläche geklickt haben, sollten dann die Städte Berlin, Madrid, Montpellier, London in dieser Reihenfolge in der Liste stehen.
Nun möchte man aber nicht immer Elemente ans Ende der Liste hängen, sondern an eine bestimmte Stelle einfügen. Dazu dient die Methode insert(). Ihr müssen Sie die Position (beginnend bei 0) und das einzufügende Element übergeben. Versuchen Sie es mit folgenden Aufrufen:
myListBox.Items.Insert(1, "Paris")
myListBox.Items.Insert(3, "Malaga")
myListBox.Items.Insert(5, "Nimes")
Nun sieht unsere Liste folgendermaßen aus: Berlin, Paris, Madrid, Malaga, Montpellier, Nimes, London. Bedenken Sie, dass die Liste nullbasiert ist. Das bedeutet, das erste Element, in unserem Fall Berlin, steht an der Stelle 0. Man nennt dies auch den Index.
Elemente löschen
Zum Löschen von Elementen gibt es drei Methoden:
- Items.Clear()
- Items.Remove()
- Items.RemoveAt()
Die erste Methode ist die einfachste. Sie löscht schlicht und einfach alle Elemente aus der Liste. Erstellen Sie eine weitere Schaltfläche und rufen Sie im Klickereignis auf:
myListBox.Items.Clear()
Die beiden anderen Methoden entfernen nur ein bestimmtes Element. Dabei kann ein Element über seine Position (Index) identifiziert werden oder über sich selbst. Beginnen wir mit dem letzten Fall.
Die Methode Remove() entfernt ein bestimmtes Element. Um die Stadt Paris zu entfernen, rufen Sie die Methode folgendermaßen auf:
myListBox.Items.Remove("Paris")
Die Methode removeAt() entfernt ein Element an einer bestimmten Position. Auch hier müssen Sie bedenken, dass das erste Element den Index 0 hat. Entfernen Sie bspw. das erste und das dritte Element:
myListBox.Items.RemoveAt(0)
myListBox.Items.RemoveAt(2)
Wie viele Elemente hat die Liste?
Auch das ist eine wichtige Information, die man ermitteln können muss. Dazu dient die Eigenschaft count. Im Folgenden wird die Anzahl der Elemente unserer Liste in einer MessageBox ausgegeben:
MessageBox.Show(myListBox.Items.Count)
Welches Element wurde ausgewählt?
Natürlich nützt eine Listenbox nichts, wenn wir nicht feststellen können, welches Element der Anwender ausgewählt hat. Dazu hat ListBox zwei Eigenschaften:
- SelectedIndex
- SelectedItem
Die erste Eigenschaft ermittelt den Index des ausgewählten Elements, die zweite das Element selbst. Rufen wir zwei MessageBoxen auf und schauen wir uns das Ergebnis an. Notieren Sie den folgenden Quellcode im Klickereignis einer Schaltfläche. Wählen Sie in unserer Liste einen Eintrag aus, z.B. Montpellier und klicken Sie auf die neu erstellte Schaltfläche.
MessageBox.Show(myListBox.SelectedIndex)
MessageBox.Show(myListBox.SelectedItem)
Die erste Box wird eine Zahl enthalten, welche der Position der Stadt Montpellier entspricht. Die zweite MessageBox enthält den ausgewählten Text selbst.
Löschen des ausgewählten Elements
Zum Abschluss ein kleines Anwendungsbeispiel. Der Benutzer soll ein Element auswählen und dieses Element wird dann beim Klicken auf eine Schaltfläche gelöscht. Erstellen Sie also eine Schaltfläche und schreiben Sie den folgenden Code ins Klickereignis:
myListBox.Items.Remove(myListBox.SelectedItem)
Wir rufen die Methode Remove() mit dem Inhalt der Eigenschaft SelectedItem auf. Das ausgewählte Element wird also gelöscht. Alternativ wäre folgende Variante ebenfalls möglich.
myListBox.Items.RemoveAt(myListBox.SelectedIndex)
Beachten Sie, dass Sie in der ersten Variante direkt mit dem Element arbeiten. Daher müssen Sie die Methode Remove() aufrufen. In der zweiten Variante ermittelt sie den Index des ausgewählten Elements. Folglich löschen Sie das Element mit der Methode RemoveAt().
