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

Combox op alfabetische volgorde zetten

Status
Niet open voor verdere reacties.

schuurar

Gebruiker
Lid geworden
15 aug 2009
Berichten
392
Ik heb een userform waarin de comboboxen gevuld worden uit een blad "grondstoffen"
Deze word nu gevuld op volgorde zoals het erin gezet is.
Kun je deze lijst ook zo krijgen dat het op alfabetische volgorde komt te staan ?
Zodat als je begint met de letter M je alles krijgt met de letter M enz.
Hoe krijg ik dat voor elkaar ?

Code:
Private Sub Userform_Initialize()
    ComboBox1.List = Sheets("data").Columns(1).SpecialCells(2).Offset(1).SpecialCells(2).Value
    For i = 2 To 28 Step 2
        Me("Combobox" & i).List = Sheets("data").Columns(3).SpecialCells(2).Offset(1).SpecialCells(2).Value
    Next
    For i = 3 To 29 Step 2
        Me("Combobox" & i).List = Sheets("Grondstoffen").Columns(4).SpecialCells(2).Offset(1).SpecialCells(2).Value
    ''.Sort Cells(1, 20)
    Next
End Sub
 
Je kunt toch ook de bron sorteren! Desnoods met VBA in het initialize event.
 
Probeer het zo eens Range uiteraard aanpassen

Code:
With CreateObject("System.Collections.ArrayList")
        For Each cl In Sheets("Grondstoffen").Range("[COLOR="#FF0000"]D3:D10000[/COLOR]")
            If Trim(cl) <> "" And Not .contains(cl.value) Then .Add Trim(cl)
            Next cl
            .Sort
            ComboBox1.List = .ToArray()
             ComboBox1.ListIndex = 0
        End With
 
Laatst bewerkt:
Waar moet ik deze code bijzetten dan?
Als ik hem vervang of er bij zet krijg ik een fout melding
 
@Arjan

De code moet in het Userform_Initialize van je Userform, en er niet bijzetten maar vervangen door deze code
Let wel op dat je de range in het rood wijzigt voor de range die de combobox moet vullen

en anders wat Octafish aangeeft een voorbeeld bestandje met wat je wil

Code:
Private Sub Userform_Initialize()
      With CreateObject("System.Collections.ArrayList")
        For Each cl In Sheets("[COLOR="#FF0000"][COLOR="#FF0000"][COLOR="#FF0000"]Grondstoffen[/COLOR][/COLOR][/COLOR]").Range("[COLOR="#FF0000"]A2:A10000[/COLOR]")
            If Trim(cl) <> "" And Not .contains(cl.value) Then .Add Trim(cl)
            Next cl
            .Sort
            ComboBox[COLOR="#FF0000"]1[/COLOR].List = .ToArray()
            ComboBox[COLOR="#FF0000"]1[/COLOR].ListIndex = 0
        End With

      With CreateObject("System.Collections.ArrayList")
        For Each cl In Sheets("[COLOR="#FF0000"]data[/COLOR]").Range("[COLOR="#FF0000"]D2:D10000[/COLOR]")
            If Trim(cl) <> "" And Not .contains(cl.value) Then .Add Trim(cl)
            Next cl
            .Sort
            ComboBox[COLOR="#FF0000"]2[/COLOR].List = .ToArray()
            ComboBox[COLOR="#FF0000"]2[/COLOR].ListIndex = 0
        End With
End Sub
 
@ Octafish :eek: ja dat weet ik natuurlijk maar soms denk ik dat ik een "simpel" probleem heb.

@ Willem
Bedankt voor de hulp zover. Maar krijg het niet aan de praat zo.

In de bijlage een voorbeeld bestandje.
 

Bijlagen

  • alfabetische volgorde.xlsm
    547 KB · Weergaven: 35
Oké Arjen,

Ik heb je bestandje bekeken maar komt er niet uit ik dacht dat het alleen was om de comboxen te vullen maar
ik zie dat er te veel code in staat wat weer afhankelijk is van de comboboxen
om die sortering voor mekaar te krijgen zal dat in een Array geplaatst moeten worden denk ik

Kijk hier of je er wat meekunt om toe te passen in je code

http://www.snb-vba.eu/VBA_Combobox.html#L_0
 
Bedankt dat je er naar hebt willen kijken Willem.
De link naar de site van snb is te ingewikkeld voor mij helaas.

Mocht iemand anders er nog naar kunnen kijken graag.
 
Wat is er mis met de suggestie in #2? De code van loek010 aanpassen is toch ook niet zo heel moeilijk?

Code:
Private Sub Userform_Initialize()
    ComboBox1.List = Sheets("data").Columns(1).SpecialCells(2).Offset(1).SpecialCells(2).Value
    ar = Sheets("data").Columns(3).SpecialCells(2).Offset(1).SpecialCells(2).Value
    With CreateObject("System.Collections.ArrayList")
      For j = 2 To UBound(ar)
        .Add ar(j, 1)
      Next j
      .Sort
      For i = 2 To 28 Step 2
        Me("Combobox" & i).List = .toarray
      Next i
    End With
    
    ar = Sheets("Grondstoffen").Columns(4).SpecialCells(2).Offset(1).SpecialCells(2).Value
    With CreateObject("System.Collections.ArrayList")
      For j = 2 To UBound(ar)
        .Add ar(j, 1)
      Next j
      .Sort
      For i = 3 To 29 Step 2
        Me("Combobox" & i).List = .toarray
      Next i
    End With
End Sub
 
VenA heel erg bedankt voor deze oplossing.
Het werkt nu zoals ik wil.
Ik had hier niet uitgekomen zelf. Zover gaat de kennis helaas niet.

Nogmaals Dank
 
Da's mooi. Het heeft niet zoveel met kennis te maken maar je moet ook wat proberen. Alles wat je nodig had staat al in jouw formulier en in de reacties voor mijn reactie. Er komt vast geen rook jouw PC/laptop als de probeersels niet werken:d
 
Code:
Private Sub Userform_Initialize()
  Blad3.Cells(2, 1).CurrentRegion.Offset(1, 3).Resize(, 5).Copy Blad3.Cells(1, 30)
  
  With Blad3.Cells(1, 30).CurrentRegion
    .Sort Blad3.Cells(1, 30)
    ComboBox3.List = .Value
    .ClearContents
  End With
End Sub

De lijst voor combobox2 is overbodig. Het gegeven staat in kolom H; dus nu in combobox3, kolom 4
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan