Sorteren combobox op datum

Status
Niet open voor verdere reacties.

mark1987vw

Gebruiker
Lid geworden
19 mei 2009
Berichten
96
Ik heb een Combobox gevuld met datums vanuit een sheet
Nu wil ik alleen dat de laatste datum bovenaan staat in de combo box in plaats voor de eerste datum.

Dus mijn vraag is of ik deze kan sorteren op datum van laat naar vroeg.

Ik heb de combobox op de volgende manier gevuld, zodat ik alleen unieke datums krijg.


Code:
Sub GetDay()
    Me.ComboBox1.Clear
    
    Dim r As Long
    
    r = 2
    v = CStr(Range("b" & r))
    While v <> ""
        
        found = False
        For i = 1 To Me.ComboBox1.ListCount
            If v = Me.ComboBox1.List(i - 1) Then found = True
        Next
        
        If Not found Then Me.ComboBox1.AddItem v
        
        r = r + 1
        v = CStr(Range("b" & r))
Wend
End Sub


Private Sub UserForm_Initialize()
GetDay
End Sub

In het voorbeeld staat de eerste datum bovenaan maar ik wil dit dus anders om.
 

Bijlagen

  • DatumsSorteren.xlsm
    16,6 KB · Weergaven: 9
Stop ze in een array en gebruik de array om de combobox te vullen:
Code:
Me.ComboBox1.List = JouwArray()
Dat is sowieso beter dan het gebruik van AddItem.
Begin onderaan met lezen van de kolom of sorteer deze eerst.

Bij de juiste versie van Excel kan je ook eerst de functie UNIEK gebruiken en lees je alleen die kolom:
PHP:
=UNIEK(B2:B188)

Voorbeeld:
 

Bijlagen

  • DatumsSorteren.xlsm
    18 KB · Weergaven: 12
Laatst bewerkt:
Met arrays werken snap ik nog niet helemaal hoe dit moet.
Maar ik zal mij er eens verder in verdiepen.

Bedankt in ieder geval voor de hulp.
 
Sorteer de data in het werkblad.
Zet die range vervolgens in de combobox via de eigenschap .List.
Sneller sorteren dan in een Excel-werkblad gaat niet.

Maar waarom heb je allemaal teksten in kolom B staan in plaats van Data ???

Dit wordt ie dan:
Code:
Private Sub UserForm_Initialize()
  Blad1.Columns(2).SpecialCells(2).AdvancedFilter 2, , Blad1.Cells(1, 10), 1
     
  With Blad1.Cells(1, 10).CurrentRegion
     sn = .Value
     For j = 2 To UBound(sn)
       sn(j, 1) = CDate(Trim(Replace(sn(j, 1), Split(sn(j, 1))(0), "")))
     Next
     .Value = sn
     
     .Sort Blad1.Cells(1, 10), 2, , , , , 1
     ComboBox1.List = .Offset(1).SpecialCells(2).Value
     For j = 0 To ComboBox1.ListCount - 1
        ComboBox1.List(j) = Format(ComboBox1.List(j), "dd-mm-yyyy")
     Next
     .ClearContents
  End With
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan