Listbox

Die Listbox enthält eine Liste von Elementen, von denen eins (oder auch mehrere, s. Abbildung 194) ausgewählt wird. Listboxen können mehrspaltig sein.

Die wichtigsten Eigenschaften:

·      Name
Mit diesem Namen kann das Element per Programm angesprochen werden.

·      ControlSource
In diese Zelle der Excel-Tabelle wird das ausgewählte Element (bzw. der Index des gewählten Elements) ausgegeben. (s.a. BoundColumn)

·      Value
Der Wert des ausgewählten Elements bzw. der Index des Werts (beginnend mit Null)

·      Text
Die Spalte, die der Benutzer sieht. Kann von Value abweichen, abhängig von TextColumn und BoundColumn

·      ListIndex
Index des markierten Elements

·      BoundColumn
Kennzeichnet die Spalte (beginnend mit 1 für die linke Spalte), aus der das Element ausgewählt werden soll.
Ist BoundColumn =0, wird nur ein Index ausgegeben, der die Stellung des gewählten Elements in der Liste wiedergibt.

·      ColumnCount
Gibt die Anzahl der Spalten an, die angezeigt werden soll.
Wenn ColumnCount =0, werden keine Spalten angezeigt, bei -1 werden alle verfügbaren Spalten angezeigt. (max. 10)

·      RowSource
Gibt die Quelle an, die eine Liste für ein Kombinationsfeld-Steuerelement (ComboBox) oder Listenfeld-Steuerelement (ListBox) zur Verfügung stellt.
Hier wird der Bereich der Excel-Tabelle ausgewählt, der die Elemente enthält, die in die Listbox geladen werden sollen.(z.B. A1:C6)

·      TextColumn
gibt die Nummer der Spalte an, die der Benutzer sehen soll

·      ListCount
Die Anzahl der Elemente in der Liste

·      TopIndex
Index des Elements, das im sichtbaren Bereich des Listenfeldes an oberster Stelle steht

·      List
Mit List(i,j) kann auf die Elemente der Liste zugegriffen werden

·      AddItem
Fügt ein Element zu einer Listbox hinzu

·      Selected
Mehrere Elemente einer Listbox können gleichzeitig ausgewählt werden, wenn die Multiselect-Eigenschaft auf True gesetzt wird.

·      RemoveItem
Das ausgewählte Element wird gelöscht.
Soll der gesamte Inhalt der Liste gelöscht werden, so benutzt man die Methode Clear.

Beispiele für Listboxen:

Abbildung 191, Listbox mit Werten aus der Tabelle laden

Set Bereich = Worksheets("Tabelle2").Range("G1:M1")

    For Each C In Bereich

        ListBox1.AddItem C

    Next C

Das Codebeispiel zeigt, wie Elemente mit der AddItem –Eigenschaft geladen werden können.

Beispiel: Mehrspaltige Tabellen in einer Listbox dargestellen:

 

Abbildung 192, Mehrspaltige Listbox mit RowSource Eigenschaft füllen

 

ListBox1.ColumnCount = 3’             Listbox mit drei Spalten

ListBox1.RowSource = "B5:D10"’  Datenquelle

Abbildung 193, BoundColumn kennzeichnet die Spalte

Cells(6, 1).ClearContents

ListBox1.ControlSource = "a6"

'In diese Zelle wird ausgewähltes Element ausgegeben

ListBox1.BoundColumn = 1

Die Eigenschaft, die eine Excel-Zelle mit der Listbox verbindet, heißt nicht LinkedCell, sondern ControlSource.

Mit BoundColumn =1 wird das Element Donnerstag (Spalte 1) in die Tabelle2 eingefügt, BoundColumn =0 fügt den Index ein (im Beispiel: 3)

 

Abbildung 194, Mehrspaltige Listboxen, z.T. mit Multiselekt-Eigenschaft

Die beiden Listboxen werden mit einem Array gefüllt, Listbox1 ist horizontal, Listbox2 vertikal ausgerichtet.

    ListBox1.List() = MyArray

    ListBox2.Column() = MyArray

Vorstehende Codezeilen zeigen die Methode.

Wenn die Listbox zulassen soll, dass mehrere Elemente ausgewählt werden können, muss die Multiselekt-Eigenschaft gesetzt werden.

Abbildung 195, Elemente im Sichtfeld positionieren

ListBox1.TopIndex = 2

Die Eigenschaft TopIndex legt fest, welches Element einer größeren Liste zuoberst im sichtbaren Fenster erscheinen soll.

Abbildung 196, Kalender der nächsten Woche in der Listbox

 

    For i = i To 7 + i - 1 'eine Woche, beginnend mit Sonntag

        MeinArray(y, 0) = Format(Date + i, "dd.mm.yy")

        MeinArray(y, 1) = Format(Date + i, "dddd")

        y = y + 1

    Next i

    With ListBox1 ' Array in Listbox laden und den Sonntag markieren

        .ColumnWidths = 60 'Spaltenbreite

        .List() = MeinArray

        .ListIndex = 0

    End With

Ein Array wird aufgebaut und in die Listbox geladen.

Abbildung 197, Reihenfolge der Listenelemente verändern

Private Sub spSchieben_SpinUp()

'Ausgewähltes Element wird nach oben verschoben

 

Dim A, B

    A = lstFrei.ListIndex

    If A = -1 Or A = 0 Then

        Exit Sub

    End If

   

    B = lstFrei.List(A)

    lstFrei.List(A) = lstFrei.List(A - 1)

    lstFrei.List(A - 1) = B

    lstFrei.ListIndex = lstFrei.ListIndex - 1

End Sub

Mit der Eigenschaft ListIndex kann die Stellung der Elemente in der Liste manipuliert werden.

Die ListIndex-Eigenschaft enthält einen Index der ausgewählten Zeile in einer Liste. Die Werte von ListIndex liegen im Bereich von -1 bis zur Gesamtanzahl der Zeilen in einer Liste - 1 (d.h. ListCount - 1). Wenn keine Zeilen ausgewählt sind, gibt ListIndex den Wert -1 zurück. Wenn der Benutzer eine Zeile in einem Listenfeld-Steuerelement oder Kombinationsfeld-Steuerelement auswählt, legt das System den Wert für ListIndex fest. Der Wert für ListIndex der ersten Zeile in einer Liste ist 0, der Wert der zweiten Zeile ist 1 usw.

 

 

 

Beispiel-Arbeitsmappe

 

 

Nicht gefunden, was Sie suchen? Dann geben Sie hier Ihren Suchbegriff ein!

Benutzerdefinierte Suche


More:

Srollbar