Listbox befüllen

Effektive Methoden zur Befüllung von Listboxen in einer Excel UserForm

Heute zeige ich dir verschiedene Methoden, wie du eine Listbox in einer UserForm mit Daten aus einer Tabelle befüllen kannst.

Die Methoden im Überblick
Es gibt insgesamt drei Methoden, mit denen du eine Listbox füllen kannst:

  • RowSource
  • AddItem
  • List: Range (Zellbereich) / Array

Ich zeige dir nicht nur die Anwendung dieser Methoden, sondern gebe dir auch einen Überblick über ihre jeweiligen Vor- und Nachteile.

Fünf entscheidende Faktoren
Um die Methoden zu vergleichen, betrachten wir fünf entscheidende Eigenschaften:

  • Überschriften: Kann eine Überschrift leicht in die Listbox eingefügt werden?
  • Spaltenanzahl: Kann die Listbox mehr als zehn Spalten enthalten?
  • Zusammenhängende Daten: Können nicht zusammenhängende Daten in die Listbox eingefügt werden?
  • Datenveränderung: Ist es möglich, Daten in der Listbox zu verändern?
  • Verknüpfung mit Tabellendaten: Sind die Tabellendaten direkt mit der Listbox verknüpft?

RowSource

Nutzt einen Zellbereich als Datenquelle und erlaubt mehr als zehn Spalten einzufügen. Die Daten müssen zusammenhängend sein.

AddItem

Ist flexibel, aber bietet keine automatische Einbindung von Überschriften. Des Weiteren können damit nur bis zu zehn Spalten eingefügt werden.

List Range

Erlaubt das Einlesen einer kompletten Tabelle und unterstützt mehr als zehn Spalten. Die Daten müssen zusammenhängend sein.

List Array

Punktet durch Flexibilität. Erlaubt das Einlesen von nicht zusammenhängenden Daten und ermöglicht mehr als zehn Spalten.

				
					Private Sub UserForm_Initialize()

'Allgemeine Einstellungen

'Überschrift
ListBox1.ColumnHeads = True

'Spaltenanzahl festlegen
ListBox1.ColumnCount = 11

'Spaltenbreite festlegen
ListBox1.ColumnWidths = "50;150;0"

'1. RowSource
ListBox1.RowSource = "Verkäufe!B12:B21"
ListBox1.RowSource = Tabelle1.Range("Verkaufsuebersicht").Address
ListBox1.RowSource = Tabelle1.Range("B12,B14").Address


'2. AddItem

Dim Zeile As Long
Dim Spalte As Long

'Schleife über alle Zeilen
For Zeile = 1 To Tabelle1.ListObjects("Verkaufsuebersicht").DataBodyRange.Rows.Count

    'ListBox befüllen
    ListBox1.AddItem Tabelle1.ListObjects("Verkaufsuebersicht").DataBodyRange(Zeile, 1)

   For Spalte = 1 To 9
        ListBox1.List(ListBox1.ListCount - 1, Spalte) = Tabelle1.ListObjects("Verkaufsuebersicht").DataBodyRange(Zeile, Spalte + 1)
    Next Spalte

Next Zeile


'3.1 List mit Range

Dim rng As Range

Set rng = Tabelle1.Range("Verkaufsuebersicht[[Lfd. Nr.]:[Straße]]")

'ListBox1.List = rng.Value

'3.2 List mit Array

Dim arr As Variant

arr = rng

ListBox1.List = arr


End Sub
				
			

Fazit
In der Praxis zeigt sich, dass Änderungen in der Listbox, die über die AddItem-Methode befüllt wurde, einfach sind. Die RowSource-Methode bietet die direkte Verknüpfung mit Tabellendaten. Bei der List-Methode ist diese Verknüpfung nicht gegeben und Änderungen im Tabellenblatt spiegeln sich nicht automatisch in der Listbox wider.

Ich hoffe dir einen besseren Überblick über die Möglichkeiten zur Befüllung einer Listbox verschafft zu haben und wünsche dir viel Erfolg bei deinen Projekten.

Melde dich gerne für meinen Newsletter an und erhalte regelmäßig Tipps & Tricks rund um das Thema Excel VBA!

Teile diesen Beitrag

Ähnliche Themen

VBATrainer Excel VBA Coaching - Lagerverwaltung

Sichere dir jetzt meine kostenlose Lagerverwaltungs-Anwendung