Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Combobox ohne Doppler und leere Zellen füllen
#1
Hallo miteinander,

ich würde gern die Combobox einer UF mit Daten einer Spalte füllen.
Das Ganze ohne doppelte Werte bzw Texte und auch ohne die leeren Zellen.

Gefunden habe ich dazu diesen Code.
Der Ersteller des Post teilt hier mit, dass er damit die Daten einer Spalte ohne doppelte Werte auflistet und sucht nach einer Änderung welche auch noch die leeren Zellen entfernt.
Code:
Private Sub ComboBox1_Enter()

Set mobjDic = CreateObject("Scripting.Dictionary")

For mlngZ = 2 To mlngLast
  mobjDic(Worksheets(C_mstrDatenblatt).Cells(mlngZ, 1).Value) = 0
Next

Me.ComboBox1.List = mobjDic.keys
Set mobjDic = Nothing
End Sub

darauf antwortet Hajo mit diesem Code:
Code:
For mlngZ = 2 To mlngLast
if Worksheets(C_mstrDatenblatt).Cells(mlngZ, 1)<>"" Then
mobjDic(Worksheets(C_mstrDatenblatt).Cells(mlngZ, 1).Value) = 0
end if
Next


ergo dann so:
Code:
Private Sub ComboBox1_Enter()

Set mobjDic = CreateObject("Scripting.Dictionary")

For mlngZ = 2 To mlngLast
if Worksheets(C_mstrDatenblatt).Cells(mlngZ, 1)<>"" Then
mobjDic(Worksheets(C_mstrDatenblatt).Cells(mlngZ, 1).Value) = 0
end if
Next


Me.ComboBox1.List = mobjDic.keys
Set mobjDic = Nothing
End Sub


Ich würde das (oder ähnliches) nun gern bei mir anwenden, scheitere aber offensichtlich schlicht an der Anpassung auf meine Tabelle.

Ich nehme an, dass ich zunächst das richtige Tabellenblatt zuweisen muss:
(Worksheets("meineListe")?

und dann die zu sortierende Spalte:
Cells(mlngZ, 8) für Spalte H?

Offensichtlich stimmt das aber nicht... die Combobox listet nichts auf.

Kann hier jemand helfen?

Viele Grüße
Klaus
Antworten Top
#2
Hi

schau noch mal in das Thema. Wenn es nicht klappt stell eine Bsp.Datei zur Verfügung.
VBA: Liste aus intelligenter Tabelle (clever-excel-forum.de)

Gruß Elex
[-] Folgende(r) 1 Nutzer sagt Danke an Elex für diesen Beitrag:
  • Klaus
Antworten Top
#3
Hallo Elex,

vielen Dank für deine Hilfe und den Link.

Leider kann ich die dortige Datei bei mir nicht öffnen und ich komme mit dem vorgezeigten Code gleich gar nicht klar.
Wie angeraten, habe ich eine Beispiel Datei gestrickt.

Vielen Danke nochmals für deine Hilfe

Liebe Grüße
Klaus


Angehängte Dateien
.xlsm   UserformTest1.xlsm (Größe: 20,9 KB / Downloads: 1)
Antworten Top
#4
So hier erst mal der Code für die Bsp.Datei.

Code:
Private Sub UserForm_Initialize()
Dim arr, oDic As Object, j

Set oDic = CreateObject("Scripting.Dictionary")

With Sheets("meineListe")
    arr = Application.Intersect(.UsedRange, .Columns(8)).Value
    For Each j In arr
       If j <> "" Then oDic(j) = 0
    Next
End With

ComboBox1.List = oDic.keys
Set oDic = Nothing
End Sub

Merkwürdig ist allerdings das Verhalten der ComboBox1 in deiner Bsp.Datei. Ich musste diese entfernen und eine neue in die UF machen damit etwas angezeigt wird.

Gruß Elex
[-] Folgende(r) 1 Nutzer sagt Danke an Elex für diesen Beitrag:
  • Klaus
Antworten Top
#5
Hallo Elex,

vielen herzlichen Dank für deine Mühen.
Der Hinweis mit der nicht korrekt funktionierenden Combobox war Gold wert.
Ich musste sogar die ganze UF neu machen damit der Code so funktioniert wie angedacht.

Jetzt funktioniert es perfekt. Klasse!

Liebe Grüße
Klaus

Hallo Elex,

darf ich nochmal nachhaken bitte?

Wie müsste ich den Code umändern, damit er erst ab Zeile 7 auflistet?

Meine leichtgläubige Annahme, dass dies reichen würde hat sich leider nicht bestätigt.
arr = Application.Intersect(.UsedRange, .Columns(8,7)).Value

Viele Grüße
Klaus
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste