Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1896to1900
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Comboboxen befüllen

Comboboxen befüllen
25.08.2022 16:02:04
Sk1988
Guten Tag!
Ich bin gerade an einer Aufgabe in der aus einer Excel Datei Spalten in eine Combobox befüllt werden sollen, das hat soweit geklappt! Jetzt bin ich gerade dabei dafür zu sorgen das keine Werte doppelt in der Combobox auftauchen. Seitdem zeigt er mir an der Stelle

sn = Columns(9).SpecialCells(2)
den Fehler 1004 keine zellen gefunden an.
Hier mal der ganze Code am Stück.

Private Sub UserForm_Initialize()
frm_GELOESCHT.Caption = "GELOESCHT - " & _
Format(Now, "dddd, d. mmm yyyy")
Dim cb As Control, z As Long, s As Long
sn = Columns(9).SpecialCells(2)
For Each cb In Me.Controls
If TypeName(cb) = "ComboBox" Then
z = 1
s = 1
While Worksheets("Tabelle1").Cells(z, s)  "" And _
cb.Tag  Worksheets("Tabelle1").Cells(z, s)
s = s + 1
Wend
z = 2
While Worksheets("Tabelle1").Cells(z, s)  ""
cb.AddItem Worksheets("Tabelle1").Cells(z, s)
z = z + 1
Wend
End If
Next
With CreateObject("scripting.dictionary")
For j = 2 To UBound(sn)
x0 = .Item(sn(j, 1))
Next
cb.List = .keys
End With
cb.List = 0
End Sub
Danke schonmal für eure Hilfe!
Gruß Sk1988

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Comboboxen befüllen
25.08.2022 16:18:43
Nepumuk
Hallo,
wo hast du denn diesen Gruselcode her?
sn = Columns(9).SpecialCells(2)
Die 2 steht für: xlCellTypeConstants. Das bedeutet du hast in Spalte I nur Formeln. Richtig?
Gruß
Nepumuk
AW: Comboboxen befüllen
25.08.2022 16:28:35
Sk1988
Gute Frage, ich hab den Code irgendwann mal hier als Hilfe bekommen, als ich nicht wusste wie ich doppelte Werte aus der Combobox bekomme. Das hatte auch Super funktioniert, aber ich hab die Vermutung das ich es nicht 1 zu 1 auf das jetzige anwenden kann.
In den Spalten A1 B1 C1 D1 usw. stehen nur Überschriften die er mit der "Tag Combobox" - Funktion ansprechen soll.
Unter den Überschriftspalten stehen dann die Werte die in die Combobox gefüllt werden müssen, zum Beispiel Ländernamen die am Ende allerdings nur 1x in der Combobox vorhanden sein dürfen.
Gruß Sk1988
Anzeige
AW: Comboboxen befüllen
25.08.2022 16:41:57
Nepumuk
Hallo,
teste mal:

Private Sub UserForm_Initialize()
Dim avntValues As Variant, vntItem As Variant
Dim lngIndex As Long
Dim objDictionary As Object
Set objDictionary = CreateObject(Class:="Scripting.Dictionary")
For lngIndex = 1 To 4
avntValues = Range(Cells(2, lngIndex), Cells(Rows.Count, lngIndex).End(xlUp)).Value
For Each vntItem In avntValues
objDictionary.Item(vntItem) = vbNullString
Next
Controls("ComboBox" & CStr(lngIndex)).List = objDictionary.keys
Call objDictionary.RemoveAll
Next
Set objDictionary = Nothing
End Sub
Gruß
Nepumuk
Anzeige
AW: Comboboxen befüllen
25.08.2022 16:58:46
Sk1988
Bekomme ich leider
Laufzeitfehler '-2147024809 (80070057):
Das angegebene Objekt konnte nicht gefunden werden.
AW: Comboboxen befüllen
25.08.2022 17:23:19
Nepumuk
Hallo,
dann lade mal eine Mustermappe hoch, in welcher der Fehler auftritt.
Gruß
Nepumuk
AW: Comboboxen befüllen
25.08.2022 17:55:27
Nepumuk
Hallo,
das kommt davon, wenn man Controls Namen gibt. Das ist für den Anwender völlig Wurst wie das Control heißt, aber es macht für den Programmierer alles umständlich und bedeutet nur Umwege. Gewöhn dir das ab, damit wirst du nicht glücklich.
Teste mal:

Private Sub UserForm_Initialize()
Dim avntValues As Variant, vntItem As Variant
Dim avntCombobox As Variant, avntColumn As Variant
Dim ialngIndex As Long
Dim objDictionary As Object
avntCombobox = Array("cmb_Kontinent", "cmb_Jahr", "cmb_Kategorie")
avntColumn = Array(1, 3, 4)
Set objDictionary = CreateObject(Class:="Scripting.Dictionary")
For ialngIndex = LBound(avntCombobox) To UBound(avntCombobox)
avntValues = Range(Cells(2, avntColumn(ialngIndex)), Cells(Rows.Count, avntColumn(ialngIndex)).End(xlUp)).Value
For Each vntItem In avntValues
objDictionary.Item(vntItem) = vbNullString
Next
Controls(avntCombobox(ialngIndex)).List = objDictionary.keys
Call objDictionary.RemoveAll
Next
Set objDictionary = Nothing
End Sub
Gruß
Nepumuk
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige