| VBA-Beispiel 137 | |
|
|
|
ListBox dynamisch befüllen |
|
|
In dieser Datei wurden einige Bereichsnamen (Zellnamen) vergeben.
Die UserForm enthält eine ComboBox, mit der Sie einen Bereichsnamen auswählen können. Nach der Auswahl passieren zwei Dinge: 1.) zur Demo wird der Zellbereich in der Tabelle markiert. 2.) die ListBox wird mit den Daten aus dem Zellbereich gefüllt (RowSource). Wählen Sie in der ListBox einen Datensatz aus, wird die entsprechende Zeile in der Tabelle gelb markiert (ListIndex der ListBox). Spielen Sie mit den Daten in der Tabelle indem Sie Spaltenüberschriften hinzufügen oder entfernen bzw. die Daten-ZEILEN erweitern. Testen Sie anschließend das Verhalten der dynamischen Bereichsnamen mit der UserForm... |
|
Private Sub UserForm_Initialize() Dim namName As Name Me.Label1.Caption = "" Me.Label2.Caption = "" 'alle Bereichsnamen in Combo auflisten For Each namName In ThisWorkbook.Names Me.comboZellnamen.AddItem (namName.Name) Next namName 'Erst ab Excel 2007 können Bereichsnamen Kommentare beinhalten. 'Label2 dient zum anzeigen der Kommentare. 'Label2 nur für Excel 2007 anzeigen: If Val(Application.Version) > 11 Then Me.Label2.Visible = True End Sub Private Sub ListBox1_Click() Dim rng As Range 'Demo für ListIndex 'Die in der ListBox per Maus ausgewählte Datenzeile 'in der Tabelle gelb anmalen: 'Set rng = Tabelle1.Range(Me.comboZellnamen) Set rng = Tabelle1.Range(Me.ListBox1.RowSource) With rng .Interior.ColorIndex = xlNone .Rows(Me.ListBox1.ListIndex + 1).Interior.ColorIndex = 36 End With Set rng = Nothing End Sub Private Sub comboZellnamen_Change() Dim strBN As String 'Bereichsname/Zellbereich Dim rng As Range strBN = Me.comboZellnamen Set rng = Tabelle1.Range(strBN) 'der ListBox den Zellbereich als Datenquelle zuweisen Me.ListBox1.RowSource = rng.Address 'ListBox bekommt so viele Spalten, wie Zellbereich Spalten hat Me.ListBox1.ColumnCount = rng.Columns.Count Me.Label1 = ThisWorkbook.Names(strBN).RefersToLocal 'geht leider erst ab Excel 2007: If Val(Application.Version) > 11 Then _ Me.Label2 = ThisWorkbook.Names(strBN).Comment rng.Select 'in Tabelle ganzen Zellbereich markieren Set rng = Nothing Tabelle1.UsedRange.Interior.ColorIndex = xlNone End Sub |
|
|
Download: vba137.zip |
|
relevante Links:
|
|
| |