01.05.2018, 09:45
Hallo Zusammen,
ich versuche gerade eine ComboBox in einer UserForm über ein Array zu füllen. Das ganze möchte ich gerne über eine Funktion machen. Ich will also in meinem Modul / meiner UserForm nachher nur noch angeben, welche Combobox gefüllt werden soll. Leider bekomme ich da immer einen Laufzeitfehler 438. - Objekt unterstützt diese Eigenschaft oder Methode nicht!
Wenn ich in meinem Code die ComboBox direkt eingebe, funktioniert alles wunderbar, nur als Variable geht es nicht. Ich habe es jetzt schon mit verschiedenen Deklarationen probiert (String, Object, ComboBox).
Hier die Funktion
Und hier der Aufruf:
Danke schon mal vorab für die Hilfe
ich versuche gerade eine ComboBox in einer UserForm über ein Array zu füllen. Das ganze möchte ich gerne über eine Funktion machen. Ich will also in meinem Modul / meiner UserForm nachher nur noch angeben, welche Combobox gefüllt werden soll. Leider bekomme ich da immer einen Laufzeitfehler 438. - Objekt unterstützt diese Eigenschaft oder Methode nicht!
Wenn ich in meinem Code die ComboBox direkt eingebe, funktioniert alles wunderbar, nur als Variable geht es nicht. Ich habe es jetzt schon mit verschiedenen Deklarationen probiert (String, Object, ComboBox).
Hier die Funktion
Code:
Public Function KategorienFinden(varWorkSheet As String, varSpalteKategorie As Integer, _
varUserForm As UserForm, varComboBox As Object) '--- Hier wird die Variable deklariert #########################
'Deklarierung
Dim arrEingabe() 'Array zum einlesen der Gesamten Spalte
Dim arrAusgabe() 'Ausgave Array --> hier stehen nacher nur noch die verschiedenen Kategorien drin
Dim letztezeile As Integer
Dim i As Integer
Dim x As Integer
Dim sizeArray As Integer
'Initialisierung
letztezeile = 1
i = 1
x = 0
letztezeile = Sheets(varWorkSheet).Cells(Rows.Count, 1).End(xlUp).Row 'findet die letzte beschriebene Zeile der Tabelle
sizeArray = letztezeile - 2 'legt die Ursprungsgröße des Arrays fest --> Anzahl der Zeilen minus der Überschrift und für das Array auf 0 gestezt
ReDim arrEingabe(sizeArray) 'legt die größe des Arrays auf die Ursprungsgröße fest
ReDim arrAusgabe(sizeArray) 'legt die größe des Arrays auf die Ursprungsgröße fest
For i = 0 To sizeArray 'schreibt in das Array alle Daten der Spalte (unsortiert, ungefiltert)
arrEingabe(i) = Sheets(varWorkSheet).Cells(i + 2, varSpalteKategorie)
Next i
funcCall = SortArrayAtoZ(arrEingabe) 'sortiert das Array von A-Z
For i = 0 To sizeArray 'Filtert die Kategorien aus dem Sortierten Array
If i = 0 Then 'schreibt die erste Zeile des AusgabeArrays mit dem ersten Wert EingabeArrays
arrAusgabe(0) = arrEingabe(0)
ElseIf arrEingabe(i) <> arrEingabe(i - 1) Then 'prüft ob die neue Zeile des EingabeArrays sich von der letzten Zeile des eingabeArrays unterscheidet
x = x + 1 ' wenn ja , dannsetze den counter x auf +1
arrAusgabe(x) = arrEingabe(i) 'schreibe das EingabeArray in das AusgabeArray
End If
Next i
'--- Hier tritt der Fehler auf #########################
ReDim Preserve arrAusgabe(x) 'legt die größe des Arrays auf die Anzahl der Kategorien fest
'--- #########################
varUserForm.varComboBox.List = arrAusgabe() 'schreibt die kategorien in eine ComboBox
End Function
Code:
Private Sub CommandButton1_Click()
funcCall = KategorienFinden("Data", 3, UserForm1, ComboBox1)
End Sub
Danke schon mal vorab für die Hilfe