Betrifft: Combobox Probleme mit sort. und doppelten Werten
von: chris b.
Geschrieben am: 27.01.2010 12:06:55
Hallo VBA experten,
ich frage hier nach weil ich einfach nichts finde das so klappt wie ich es will :(
Ich habe eine ganz einfache Form erstellt auf dieser habe ich eine Combobox.
Und diese will ich nur mit werten aus einer Spalte befüllen.
Spalte J ab Zeile 5 bis zum letzten eintrag.Dazwischen können auch leerzellen sein diese natürlich nicht.
Ich schaffe es einfach nicht die daten so einzufügen das Sie sortiert sind.
Obwohl ich schon mehere gefunden habe die Sortieren.
Aber keine Anzeige ist dann so wie die Werte angezeigt werden wie in Excel mit dem Autofilter.
Wie bekomme ich die Werte so eingetragen ? Was auch noch wichtig ist das keine Doppelten Werte in die userform eingetragen werden.
Könnt Ihr mir bitte helfen ?
Vielen Dank
Betrifft: https://www.herber.de/forum/messages/1133233.html
von: NoNet
Geschrieben am: 27.01.2010 12:14:19
Hallo Chris,
fast exakt die gleiche Frage habe ich gestern beantwortet - siehe hier :
https://www.herber.de/forum/messages/1133233.html
Anstelle der 4 (Spalte D) musst du entsprechend 10 (Spalte J) einsetzen !
Gruß, NoNet
Betrifft: AW: https://www.herber.de/forum/messages/1133233.html
von: chris b.
Geschrieben am: 27.01.2010 12:28:15
Hi NoNet,
auch dieser Code klappt nicht so wie ich es mir vorgestellt habe :(
Das liegt sicher an der Programmierung vor mir.
Vielen Dank Dir auf jeden fall für Deine Hilfe !!!
gruß Chris
Betrifft: AW: Combobox Probleme mit sort. und doppelten Werten
von: Tino
Geschrieben am: 27.01.2010 12:21:09
Hallo,
kann man z. Bsp. so machen.
Erst doppelte raus danach mit Quicksort sortieren.
kommt als Code in UserForm1
Option Explicit Private Sub UserForm_Initialize() Dim meAr() With Tabelle1 meAr = .Range("J5", .Cells(.Rows.Count, 10).End(xlUp)).Value2 End With Call DoppelteRaus(meAr) Call QuickSort(meAr, Lbound(meAr), Ubound(meAr)) ComboBox1.List = meAr End Subkommt als Code in Modul1
Option Explicit Sub DoppelteRaus(ByRef meAr()) Dim oDic As Object Dim A As Long Set oDic = CreateObject("Scripting.Dictionary") For A = 1 To Ubound(meAr) If meAr(A, 1) <> "" Then oDic(meAr(A, 1)) = 0 End If Next A meAr = oDic.keys End Sub Sub QuickSort(ByRef sArray As Variant, ByVal MinElem As Long, MaxElem As Long) Dim Mitte As Long Dim vDummy As Variant Dim i As Long, j As Long If MinElem > MaxElem Then ' ' Rekursion beenden ' Exit Sub End If Mitte = (MinElem + MaxElem) \ 2 i = MinElem j = MaxElem Do Do While sArray(i) < sArray(Mitte) i = i + 1 Loop Do While sArray(j) > sArray(Mitte) j = j - 1 Loop If i <= j Then vDummy = sArray(j) sArray(j) = sArray(i) sArray(i) = vDummy i = i + 1 j = j - 1 End If Loop Until i > j ' ' Rekursiver Aufruf mit den Teil-Arrays ' QuickSort sArray, MinElem, j QuickSort sArray, i, MaxElem End SubGruß Tino
Betrifft: AW: Combobox Probleme mit sort. und doppelten Werten
von: chris b.
Geschrieben am: 27.01.2010 12:33:54
Danke noche inmal NoNet,
aber Tino deine Lösung klappt 100% vielen dank noch einmal an euch beide !!