Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1312to1316
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
CMB ohne doppelte Werte
10.05.2013 23:10:44
Heike
Hallo liebes Forum,
wie kann ich 2 CMB ohne doppelte Werte anzeigen lassen? Mit einer CMB klappt es!
Also, ich habe in meiner Userform 2 Frames erstellt mit je einer ComboBox.
In Frame1 wird die CMB1 mit folgendem Code ohne doppelte Einträge angezeigt:
Dim lIndxA   As Long      ' For/Next Index - außen
Dim lIndxI   As Long      ' For/Next Index - innen
Dim sTemp    As String    ' temporärer Zwischenspeicher
Dim hsh As Object, i As Long  'für doppelte Werte in CMB
'ab hier damit keine doppelten Werte in CMB
Const iCOL As Integer = 2    '2 = Spalte B
Set hsh = CreateObject("Scripting.Dictionary")
With Sheets("Artikelliste")
For i = 5 To .Cells(.Rows.Count, iCOL).End(xlUp).Row
hsh(.Cells(i, iCOL).Text) = 0
Next
End With
Me.ComboBox1.List = Application.Transpose(hsh.Keys)
'      ComboBox sortieren :
For lIndxA = 0 To Me.ComboBox1.ListCount - 1
For lIndxI = 0 To lIndxA - 1
If Me.ComboBox1.List(lIndxI) > Me.ComboBox1.List(lIndxA) Then
sTemp = Me.ComboBox1.List(lIndxI)
Me.ComboBox1.List(lIndxI) = Me.ComboBox1.List(lIndxA)
Me.ComboBox1.List(lIndxA) = sTemp
End If
Next lIndxI
Next lIndxA
In Frame2 befindet sich die ComboBox5, aber wenn ich den obigen Code kopiere und ändere, zeigt er mir trotzdem die Doppelten an.
Würde mich sehr freuen, wenn jemand sich das angucken würde. Vielen Dank schon einmal im voraus.
Gruß
Heike

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

Betreff
Datum
Anwender
Anzeige
keine Probleme ...
11.05.2013 02:52:42
Matthias
Hallo Heike
aber wenn ich den obigen Code kopiere und ändere, zeigt er mir trotzdem die Doppelten an.
Habe ich gerade erfolgreich getestet - keine Doppelten
Poste doch bitte mal den geänderten Code für Combobox5
Ich bin mir fast sicher, Dir ist da nur ein Flüchtigkeitsfehler unterlaufen.
Gruß Matthias

AW: keine Probleme ...
11.05.2013 08:36:25
Heike
Hallo, guten Morgen Matthias,
vielen Dank für deine Hilfe, folgend der 2. Code für CMB5:
  ... Next lIndxA ...  (die letzte Zeile aus dem 1. Code zum Sortieren)
'ComboBox5
Set hsh = CreateObject("Scripting.Dictionary")
With Sheets("Artikelliste")
For i = 5 To .Cells(.Rows.Count, iCOL).End(xlUp).Row
hsh(.Cells(i, iCOL).Text) = 0
Next
End With
Me.ComboBox5.List = Application.Transpose(hsh.Keys)
'      ComboBox sortieren :
For lIndxA = 0 To Me.ComboBox5.ListCount - 1
For lIndxI = 0 To lIndxA - 1
If Me.ComboBox5.List(lIndxI) > Me.ComboBox5.List(lIndxA) Then
sTemp = Me.ComboBox5.List(lIndxI)
Me.ComboBox5.List(lIndxI) = Me.ComboBox5.List(lIndxA)
Me.ComboBox5.List(lIndxA) = sTemp
End If
Next lIndxI
Next lIndxA

Gruß
Heike

Anzeige
wieder keine Probleme, Heike
11.05.2013 08:49:58
Matthias
Hallo Heike
Ich habe es getestet.
Auch in Combobox5 werden keine Doppler eingelesen.
Evtl. Mappe hochladen.
Gruß Matthias

AW: keine Probleme ...
11.05.2013 08:57:46
Luschi
Hallo Heike,
vielleicht sind es nur Leerzeichen in der Zelle, die am eigentlichen Wert noch dranhängen.
Wenn das so ist, sollte dies hier helfen:
hsh(Trim(.Cells(i, iCOL).Text)) = 0
Bei der Sortierung würde ich zuerst das Dictionary in die richtige Reihenfolge bringn und dann erst der Combobox zuweisen, Wie das geht, siehe hier (letzte Funktion):
http://www.cpearson.com/excel/CollectionsAndDictionaries.htm
Gruß von Luschi
aus klein-Paris

Anzeige
Fehler gefunden ...
11.05.2013 09:35:32
Heike
Hallo ihr,
habe den Fehler gefunden. Der Code steht ja unter "Private Sub UserForm_Initialize()"
und gaaaaanz weit unten war noch folgende CodeZeil:
"ComboBox5.RowSource = "Artikelliste!B5:B" & Sheets("Artikelliste").Range("B5").End(xlDown).Row"
diese habe ich auskommentiert und schon waren keine Doppelten mehr vorhanden! So blöd, manchmal sieht man vor lauter Bäumen den Wald nicht mehr :-( 2 Tage doktor ich schon damit rum und kaum stelle ich mein Problem hier rein, finde ich die Lösung, es ist wie verhext!
Hey Luschi, ich bin keine Programmiererin, ich muss lediglich so nebenbei unsere Formulare ändern, was mir auch wirklich viel Spaß macht und hier im Forum habe ich schon tolle Lösungsansätze gefunden, die ich meistens auch ändern kann. Aber dein Vorschlag für die Sortierung (du meinst bestimmt SortDictionary) verstehe ich nicht - sorry, ich wüßte jetzt nicht, wo die Sortierung hin gehört.
Ich danke euch recht herzlich, denn jetzt kann ich das nächste Problem angehen :-)
Viele sonnige Grüße
Heike

Anzeige
wo sollen die denn plötzlich herkommen ?
11.05.2013 09:40:08
Matthias
Hallo Luschi
Wo sollen denn plötzlich die Leerzeichen herkommen
Der Code ist doch der gleiche wie für Combobox1, mit den gleichen Zellen (B5:B?).
Bei Combobox1 klappts doch.
Normalerweise reicht dann ja auch:
Me.ComboBox5.List = Me.ComboBox1.List

als alles nochmal einzulesen
Oder hab ich was übersehen?
Gruß Matthias

AW: wo sollen die denn plötzlich herkommen ?
11.05.2013 17:23:36
Heike
Hallo Matthias,
nein, du hast nichts übersehen. Beide Frames arbeiten unabhängig voneinander nutzen aber dieselbe Artikelliste. Klappt jetzt wunderbar :-)
Viele Grüße
Heike
Anzeige

318 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige