Private Sub UserForm_Initialize() Dim avntValues As Variant Dim ialngIndex As Long, lngIndex As Long Dim objArrayList As Object avntValues = SpaltenAuswahl(GetValues)
With ListBox1 .ColumnCount = UBound(avntValues, 2) .List = avntValues End With Set objArrayList = CreateObject(Class:="System.Collections.ArrayList") For lngIndex = 1 To 8 For ialngIndex = LBound(avntValues, 1) To UBound(avntValues, 1) If Not objArrayList.Contains(avntValues(ialngIndex, lngIndex)) Then _ Call objArrayList.Add(avntValues(ialngIndex, lngIndex)) Next Call objArrayList.Sort Controls("ComboBox" & CStr(lngIndex)).List = objArrayList.ToArray Call objArrayList.Clear Next Set objArrayList = Nothing End Sub
Private Function SpaltenAuswahl(varR As Variant) As Variant Dim i As Long, j As Long Dim varC As Variant, varL As Variant 'A, C, D, E, F, I, K , L , M , O varC = Array(1, 3, 4, 5, 6, 9, 11, 12, 13, 15) ReDim varL(1 To UBound(varR), 0 To UBound(varC)) For i = 2 To UBound(varR) For j = 0 To UBound(varC) varL(i - 1, j) = varR(i, varC(j)) Next j Next i SpaltenAuswahl = varL End Function
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28 • Redgeier
Kurze Erläuterung zur Tabelle. Dort habe ich beide Codes in der Userform (mit der Fehlermeldung) eingefügt. Tabelle 1 befinden sich meine Daten und im Reiter "Test" sind meine Vorstellungen geschrieben, welche 10 Spalten ich gern in meiner Listbox haben möchte.
Die Userform (Formulardarstellung) müsste auf meine ausgewählten Spalten noch angepasst werden.
Wie gesagt...ohne Deine Function funktioniert die Darstellung mit der Tabelle 1 über den Code:
Private Sub UserForm_Initialize()
Dim avntValues As Variant
Dim ialngIndex As Long, lngIndex As Long
Dim objArrayList As Object
avntValues = GetValues
With ListBox1
.ColumnCount = UBound(avntValues, 2)
.List = avntValues
End With
Set objArrayList = CreateObject(Class:="System.Collections.ArrayList")
For lngIndex = 1 To 8
For ialngIndex = LBound(avntValues, 1) To UBound(avntValues, 1)
If Not objArrayList.Contains(avntValues(ialngIndex, lngIndex)) Then _
Call objArrayList.Add(avntValues(ialngIndex, lngIndex))
Next
Call objArrayList.Sort
Controls("ComboBox" & CStr(lngIndex)).List = objArrayList.ToArray
Call objArrayList.Clear
Next
Set objArrayList = Nothing
End Sub