Unieke waarden in een combobox op numerieke volgorde

Status
Niet open voor verdere reacties.

ericje85

Gebruiker
Lid geworden
11 aug 2008
Berichten
31
Hoi allen,
Tot dusver is het gelukt om vanuit een werkblad met allerlei waarden de unieke waarden in een combobox op een Userform weer te geven. Hij zet deze neer in de volgorde waarin hij ze laadt vanuit het werkblad. Ik wil deze lijst echter gesorteerd hebben op numerieke volgorde.
Ik heb gezien dat er al meerdere soortgelijke vragen op dit forum zijn gesteld, maar als ik die codes ervan probeer te verwerken in mijn code blijft hij een foutmelding geven.

Vandaar de vraag wie mij vooruit kan helpen. Hieronder de code tot dusver:

Code:
 Private Sub UserForm_Initialize()

With Sheets("Planlijst Behandeling")
sn = .Range("c4:c" & .Cells(Rows.Count, 3).End(xlUp).Row).Value
For j = 1 To UBound(sn)
If InStr(c01 & ",", "," & sn(j, 1) & ",") = 0 Then c01 = c01 & "," & sn(j, 1)
Next

UserNrComboBoxBEH.List = Split(Mid(c01, 2), ",")

End With

End Sub

Bij voorbaat dank!
Groet,
Eric
 
Als je zegt een foutmelding te krijgen, vermeld deze er dan ook bij.
 
Zie hieronder. Ik had gedacht dat het eenvoudig was door achter de gehele code .sort toe te voegen (wat ik ook bij andere code gezien had), maar zo simpel is het dus niet. Ik krijg een foutmelding 438: eigenschap of methode wordt niet ondersteund door dit object.

Code:
 Private Sub UserForm_Initialize()

With Sheets("Planlijst Behandeling")
sn = .Range("c4:c" & .Cells(Rows.Count, 3).End(xlUp).Row).Value
For j = 1 To UBound(sn)
If InStr(c01 & ",", "," & sn(j, 1) & ",") = 0 Then c01 = c01 & "," & sn(j, 1)
Next
.Sort

UserNrComboBoxBEH.List = Split(Mid(c01, 2), ",")

End With

End Sub
 
Eerst sorteren en dan in sn zetten? Anders even een voorbeeldbestandje plaatsen.

Code:
Private Sub UserForm_Initialize()
With Sheets("Planlijst Behandeling")
    .[c4].CurrentRegion.Sort .[c4]
    sn = .Range("c4:c" & .Cells(Rows.Count, 3).End(xlUp).Row).Value
    For j = 1 To UBound(sn)
        If InStr(c01 & ",", "," & sn(j, 1) & ",") = 0 Then c01 = c01 & "," & sn(j, 1)
    Next
    UserNrComboBoxBEH.List = Split(Mid(c01, 2), ",")
End With
End Sub
 
Gebruik System.Collections.ArrayList, deze kan je 'on the fly' sorteren.
Code:
Private Sub UserForm_Initialize()
    With Sheets("Planlijst Behandeling")
        sn = .Range("c4:c" & .Cells(Rows.Count, 3).End(xlUp).Row).Value
        With CreateObject("System.Collections.ArrayList")
            For i = 1 To UBound(sn)
                If Not .contains(sn(i, 1)) Then .Add (sn(i, 1))
            Next
            .Sort
            UserNrComboBoxBEH.List = .toarray
        End With
    End With
End Sub
 
Hey VenA en Warme Bakkertje,
Beide dank voor jullie hulp. De eerste versie (van VenA) werkte niet. Die van Warme Bakkertje werkt als een trein. Ik had al zo'n idee dat het over een andere boeg moest, maar mijn kennis van VBA is te beperkt om dat voor elkaar gebokst te krijgen. Dus ontzettend bedankt!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan