Hallo Experten,
wie kann ich ein mehrspaltiges Listenfeld programmieren ohne Daten aus einer Tabelle einlesen zu müssen?
Vielen Dank schonmal.
Gruß
Thomas
Hallo Experten,
wie kann ich ein mehrspaltiges Listenfeld programmieren ohne Daten aus einer Tabelle einlesen zu müssen?
Vielen Dank schonmal.
Gruß
Thomas
Hallo Thomas,
du muss die die Daten für das Listenfeld in ein zweidimensionales Feld(Array) schreiben. Anschließend kannst du dieses Feld der Listbox als Auswahlliste zuweisen.
Gruß
Franz
Hier ein Beispielcode für eine Steuerelement-Listbox in der Tabelle. Die Liste wird jeweils neu berechnet wenn man die Listbox anklickt. Evtl. macht es auch Sinn den Code mit entsprechenden Anpassungen in der Workbook_Open oder Sheet_Activate Prozedur anzulegen. Für eine Formular-Listbox kann man ähnlich vorgehen. Hier sollte der Code dann in der Initilisierungs-Prozedur des Formulars stehen.
Private Sub ListBox1\_GotFocus()
'Formatieren und Auswahlliste erzeugen wenn Listbox angeklickt wird
Dim Spalte1, Spalte2, Spalte3, i As Integer, Listdaten(), Wert, index As Integer
Spalte1 = Array("A", "B", "C", "D", "E")
Spalte2 = Array("Beschreibung A", "Beschreibung B", "Beschreibung C", "Beschreibung D", "Beschreibung E")
Spalte3 = Array(1, 2, 3, 4, 5)
Wert = Me.Range(Me.ListBox1.LinkedCell) ' Wert der Listbox aus Tabelle auslesen
ReDim Listdaten(0 To UBound(Spalte1), 0 To 2)
With Me.ListBox1
.ColumnCount = 3
.BoundColumn = 3
.ColumnWidths = "20Pt;90Pt;20Pt"
.Width = 140
.Height = 80
For i = 0 To UBound(Spalte1)
Listdaten(i, 0) = Spalte1(i)
Listdaten(i, 1) = Spalte2(i)
Listdaten(i, 2) = Spalte3(i)
If .BoundColumn = 0 Then
index = Wert
Else
If Wert = Listdaten(i, .BoundColumn - 1) Then index = i
End If
Next
.List = Listdaten
.ListIndex = index
End With
End Sub
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hallo Franz,
bin erst gestern Abend dazu gekommen deinen Code auszuprobieren.
Herzlichen Dank, genau so haben ich mir mein Listenfeld vorgestellt.
Schöne Grüße
Thomas