• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

sorteren in combobox

Status
Niet open voor verdere reacties.

AndreXL

Gebruiker
Lid geworden
1 jan 2008
Berichten
33
Hallo,

Ik heb een serie willekeurige orders in een brontabel staan.
De tabel is gesorteerd op ordernr (kolom A). Tevens bevat de tabel oa de ordernaam (kolom B). Om deze na een bepaalde selectie te kunnen filteren en weer te geven, gebruik ik een userform, waarbij ik het probleem heb met de volgorde. Met een lus doorloop ik de tabel en voeg de betreffende regel toe met de volgende code:

Code:
ComboBox1.AddItem Sheets(1).Cells(teller, 2).Value, ComboBox1.ListCount

De regel voegt zo de ordernaam toe, achter het laatste item
De waarden in mijn Combobox1 zijn echter de ordernamen. Ik wil echter deze lijst niet op de volgorde van het ordernr, maar op alfabetische volgorde uit de kolom namen. Deze namen zijn overigens uniek.
Is het mogelijk de combobox inhoud te sorteren, of in plaats van combobox1.listcount op het juiste indexnr? Hoe kan is die te bepalen?

Ter vergelijking: een willekeurige numerieke serie kan ik wel met =KLEINSTE gesorteerd krijgen, maar hoe kan dit met tekst, van varierende lengte en inhoud?

met groet,
AndreXL
 
Code:
ComboBox1.AddItem Sheets(1).Cells(teller, 2).Value, ComboBox1.ListCount

Dit lijkt me een beetje veel want de laatste positie is de defaultwaarde:
Voldoende is:
Code:
ComboBox1.AddItem Sheets(1).Cells(teller, 2).Value

Als je wil sorteren na toevoeging aan een 1-dimensionele matrix in de Combobox:

Code:
Sub sorteer1()
  With Cells(1, 20).Resize(ComboBox1.ListCount)
    .Value = ComboBox1.List
    .Sort Cells(1, 20)
  End With
        
  ComboBox1.List = Columns(20).specialcells(2).Value
End Sub
Sorteren op het 3e element en inlezen van een meerdimensionele matrix
Code:
Sub sorteer2()
  With Cells(1, 20).Resize(ComboBox1.ListCount,ubound(combobox1.list,2))
    .Value = ComboBox1.List
    .Sort Cells([COLOR="Blue"]3[/COLOR], 20)
  End With
        
  ComboBox1.List = Cells(1, 20).CurrentRegion.Value
End Sub
 
Laatst bewerkt:
Wim,

Bedankt voor je snelle antwoord en de link.
In het antwoord wordt een kopie van de lijst op een werkblad gesorteerd, voordat de combobox gevuld wordt. Ik was eigenlijk op zoek of er ook een mogelijkheid was om de items van een combobox te kunnen sorteren of op een gesorteerde manier te kunnen vullen, dus zonder de werkblad-manier sorteren.

Als het niet anders kan, gebruik ik deze manier wel.

AndreXL
 
snb,

Ik ga jouw manier direkt uitproberen, ziet er veelbelovend uit!

Bedankt!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan