• 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 items alfabetisch sorteren

Status
Niet open voor verdere reacties.

BarryT

Gebruiker
Lid geworden
16 apr 2021
Berichten
30
Hallo,
Ik heb een bestand waarbij een combobox gevuld wordt met items die afhankelijk zijn van een andere combobox.
De items worden allemaal correct weergegeven in de 2e combobox, echter niet gesorteerd op alfabetische volgorde.

In combobox cbBedrijf kies ik eerst een vestiging.
Vervolgens zie ik in combobox cbEindgebruiker enkel de eindgebruikers van die bepaalde vestiging.
Aan de hand van die selectie wordt een listbox met 6 kolommen gevuld met data.

Het functioneerd allemaal prima, maar ik wil graag dat de waardes in cbEindgebruiker op alfabetische volgorde worden weergegeven.

Dit is de huidige code voor het cbBedrijf_Change event:

Code:
Private Sub cbBedrijf_Change()
'populate cbEindgebruiker

    Dim EindgebruikerRange As Range, cell As Range
    Dim EindgebruikerCollection As Collection
    Dim lastrow As Long
    Dim item As Variant
    
    cbEindgebruiker.Clear
    lastrow = ThisWorkbook.Worksheets("Hardware").Range("A1").CurrentRegion.Rows.count
    Set EindgebruikerCollection = New Collection
    Set EindgebruikerRange = ThisWorkbook.Worksheets("Hardware").Range("M2:M" & lastrow)
    
    On Error Resume Next
    
    For Each cell In EindgebruikerRange
        If (cell.Offset(, -12)) = cbBedrijf.Value Then
            EindgebruikerCollection.Add item:=cell.Value, Key:=CStr(cell.Value)
        End If
    Next cell
    
    For Each item In EindgebruikerCollection
        cbEindgebruiker.AddItem item
    Next item

End Sub

De reden dat ik een collection gebruik is omdat ik hier een key kan meegeven, waardoor er unieke items in de combobox worden weergegeven (anders zouden er dubbele waardes in komen te staan).

Kan iemand mij op de juiste weg helpen om de waardes in de combobox te sorteren?
 
Graag een vb`tje,
maar je kunt beginnen om die gegevens automatisch al bij de bron te sorteren, dus in de tabel of zo...
Dat kan automatisch met een macro uiteraard.
 
Niet getest

Code:
Private Sub cbBedrijf_Change()
 Dim ar, i As Long
 ar = ThisWorkbook.Sheets("Hardware").UsedRange
 
 With CreateObject("system.collections.arraylist")
   For i = 1 To UBound(ar)
     If ar(i, 1) = cbBedrijf.Value Then
        If Not .contains(ar(i, 13)) Then .Add ar(i, 13)
     End If
   Next
   .Sort
   cbEindgebruiker.List = .toarray
 End With
End Sub
 
Gebruik de mogelijkheden van Excel:

Code:
Private Sub cbBedrijf_Change()
  With Sheets("Hardware").Cells(1).CurrentRegion
    .AutoFilter 1, cbBedrijf
    .Copy Sheets("Hardware").Cells(1, 100)
    .AutoFilter
  End With
     
  With Sheets("Hardware").Cells(1, 100).CurrentRegion
    .Sort Sheets("Hardware").Cells(1, 112), , , , , , 1
    cbEindgebruiker.List = .Offset(1).Columns(12).SpecialCells(2).Value
    .ClearContents
  End With
End Sub
 
Alsook (office 365 benodigd)

Code:
Private Sub cbBedrijf_Exit(ByVal Cancel As MSForms.ReturnBoolean)
 With Sheets("Hardware").Cells(1).CurrentRegion
   cbEindgebruiker.List = Evaluate("unique(sort(filter(" & .Columns(13).Address(, , , 1) & "," & .Columns(1).Address(, , , 1) & "=""" & cbBedrijf & ""","""")))")
 End With
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan