• 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.

Combobox sorteren van laag naar hoog

Status
Niet open voor verdere reacties.

loek010

Gebruiker
Lid geworden
1 jul 2016
Berichten
364
Beste hulpverleners,

Kan iemand mij vertellen hoe ik in onderstaande code, de list sorteert op laag naar hoog boven aan de list,
hij vult nu de combobox list van laag naar laatst ingevoerde datum dus helemaal onderaan de list
dus wat ik zou willen dat de laatst ingevoerde datum boven aan in list komt.

Code:
RRow = 3
With Sheets("Urenregistratie")
Do Until .Cells(RRow, 12) = ""
EntryFound = False
ListCounter = 0
Do Until ListCounter = ComboBox6.ListCount
If ComboBox6.List(ListCounter) = .Cells(RRow, 12) Then
EntryFound = True
Exit Do
End If
ListCounter = ListCounter + 1
Loop
If EntryFound = False Then ComboBox6.AddItem .Cells(RRow, 12)
RRow = RRow + 1
Loop
End With
End Sub

graag uw hulp

met vr.grt,

Willem
 
test dit eens:

Code:
rrow = Range("L" & Rows.Count).End(xlUp).Row
With Sheets("Urenregistratie")
Do Until rrow = 2
EntryFound = False
ListCounter = 0
Do Until ListCounter = ComboBox6.ListCount
If ComboBox6.List(ListCounter) = .Cells(rrow, 12) Then
EntryFound = True
Exit Do
End If
ListCounter = ListCounter + 1
Loop
If EntryFound = False Then ComboBox6.AddItem .Cells(rrow, 12)
rrow = rrow - 1
Loop
End With
 
Hallo Sjon,

Bedankt voor je snelle reactie , maar krijg met een fout helaas

Code:
RRow = Range("L" & Rows.Count).End(xlUp).Row
With Sheets("Urenregistratie")
Do Until RRow = 2
EntryFound = False
ListCounter = 0
Do Until ListCounter = ComboBox6.ListCount
[COLOR="#FF0000"]If ComboBox6.List(ListCounter) = .Cells(RRow, 12) Then
[/COLOR]EntryFound = True
Exit Do
End If
ListCounter = ListCounter + 1
Loop
If EntryFound = False Then ComboBox6.AddItem .Cells(RRow, 12)
RRow = RRow - 1
Loop
End With
End Sub

Grt Willem
 
En inspringen in de code.
 
@HSV

Beste Harry wat bedoel je met inspringen op code ?

Grt Willem
 
dat je niet alle code in de kantlijn hebt staan maar dat je het overzichtelijk groepeert.
 
Ik zal er ook eens op inspringen:

Code:
Sub M_snb()
  sn=sheet1.cells(1).currentregion.columns(1)
  sp=sn

  for j=1 to ubound(sn)
    sp(1+ubound(sn)-j,1)=sn(j,1)
  next
 
  Combobox6.list=sp
End Sub
 
Ik ben van mening dat mijn eerdere aanpassing werkt:
 

Bijlagen

  • Urenregistratie.xlsb
    23,4 KB · Weergaven: 47
ps zoals SjonR dat doet, plaats hij de lijst omgekeerd in de combo maar hij wordt niet gesorteerd.
 
Het "sorteren" vindt in de oude code ook niet plaats. Zolang de taken op chronologische volgorde blijven staan is dit ook niet nodig.
 
Gesorteerd:
Code:
Dim sv, i As Long, j As Long, tmp
With Sheets("blad1")
sv = .Range("L3", .Cells(Rows.Count, 12).End(xlUp)).Value
 For i = 1 To UBound(sv)
    For j = i + 1 To UBound(sv)
       If sv(i, 1) < sv(j, 1) Then
            tmp = sv(j, 1)
            sv(j, 1) = sv(i, 1)
            sv(i, 1) = tmp
      End If
    Next j
  Next i
  ComboBox2.List = sv
  End With
 
Waarom zweven er wat formules in kolom X? Die moeten na het selecteren van een waarde in ComboBox2 in ComboBox1 komen?

Door de tabel te sorteren en de gegevens in een array te zetten.
Code:
Dim ar
Private Sub UserForm_Initialize()
  With Sheets("Blad1").Cells(2, 1).CurrentRegion
    ar = .Value
    .Sort .Cells(1, 12), 2, , , , , , xlYes
    ComboBox2.List = .Offset(1).Columns(12).SpecialCells(2).Value
    .Value = ar
  End With
End Sub
Private Sub ComboBox2_Change()
  For j = 2 To UBound(ar)
    If ar(j, 12) = ComboBox2 Then c00 = c00 & "|" & "Uren. " & ar(j, 2) & Format(ar(j, 1), ": ddd-dd-mmm-yy")
  Next j
  ComboBox1.List = Split(Mid(c00, 2), "|")
End Sub
 

Bijlagen

  • Urenregistratie.xlsb
    24,1 KB · Weergaven: 37
@sjonR

Inderdaad werkt de code nu wel ik weet niet wat er eerder een fout gaf
maar ok hij werkt zoals je code in het vb
dit was de opzet om de combobox in omgekeerde volgorde te krijgen
eerdere opmerking van Sylvester ponte dat maakt niet uit de cronologische volgorde omdat alles op 1 regel staat
het ging mij er om dat als er bv 1000 ordernummers zijn dat ik niet helemaal naar beneden moet scrollen
om het order nummer te vinden en nu gelijk het nummer boven in de list te vinden is
Dus probleem opgelost

een ieder bedankt voor hun inzet.

met vr.grt.

Willem
 
Dan lijkt me dit voldoende:
En had de vraag beter kunnen luiden: 'hoe krijg ik de laatste invoer op de eerste plaats in de combobox' ?

Code:
Sub M_snb()
  Combobox6.additem combobox6.list(combobox6.listcount-1,0),0
End Sub


Maar vermijd 'additem' om een box te vullen.
Kijk ook eens hier: http://www.snb-vba.eu/VBA_Fill_combobox_listbox.html
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan