Hallo Hannes,
mal ein paar Sachen:
Private Sub ImageCombo1_change()
Dim i As Long
Dim Variante
Dim auswahl As String
For i = 4 To 1000
If Cells(6, i) <> "" Then
Variante = Cells(6, i)
ImageCombo1.ComboItems.Add , , Variante
End If
Next
End Sub
Wozu soll die Variable auswahl gut sein, die wird nicht genutzt?
Wozu den Zellwert erst in eine Variable schreiben und dann die Variable an die Combobox übergeben?
Du hast den Code zum Einlesen der Daten der Combobox im Combobox_Change Ereignis. Das bedeutet, dass du bei jeder Änderung in der Combobox die Daten erneut in die Combobox einliest. Das ist Quatsch, der Code zum Füllen der Combobox gehört ins Userform_Initialize Ereignis.
Frage: Hast du tatsächlich immer bis Spalte 1000, das wäre die Spalte ALL, Daten/Überschriften?
Private Sub ImageCombo1_Change()
TextBox1 = ImageCombo1
End Sub
Private Sub UserForm_Initialize()
Dim loSpalte As Long
Dim i As Long
With Worksheets("Tabelle1") 'Blattname anpassen
loSpalte = .Cells(6, .Columns.Count).End(xlToLeft).Column
For i = 4 To loSpalte
If Cells(6, i) <> "" Then
ImageCombo1.AddItem .Cells(6, i)
End If
Next
End With
End Sub
Beide Codes ins Codemodul deiner Userform. Rechtsklick auf die Userform, Code ins Codefenster kopieren.
Der Code ermittelt beim Befüllen der Combobox zunächst die letzte belegte Spalte in Zeile 6, die Schleife läuft dann auch nur bis zu dieser letzten belegten Spalte und nicht bis Spalte 1000.
Die Combobox wird direkt befüllt und nicht über den Umweg einer Variablen
Den Aufruf deiner Userform kriegst du ja selbst hin
Gruß Werner
|