Mejorar código de captura de combo box en user form

Dante,

Te pido de la manera más atenta me apoyes mejorando este código como hiciste con la pregunta anterior.

Este método es muy antiguo y tienes una forma excelente de resumirlos.

Se trata de ordernar los datos de una hoja de Excel para cargarla en un combobox de un formulario

De antemano gracias!

Dim PROD1 As Object
Set PROD1 = Worksheets("DIRECTORIO").Cells(2, 1).Resize _
(Worksheets("DIRECTORIO").Cells(2, 1).CurrentRegion.Rows.Count - 1)
Worksheets("DIRECTORIO").Cells(2, 1).Sort _
Key1:=Worksheets("DIRECTORIO").Cells(2, 1), _
Order1:=xlAscending, Header:=xlYes, _
OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom
ComboBox12.Text = ""
For Each Indice In PROD1
UserForm2.ComboBox12.AddItem Indice.Value
Next

1 Respuesta

Respuesta
1

Esta sería una forma, no es necesario ordenar los datos en la hoja, se ordenan al momento de cargar el combo. Sirve para cuando no quieres ordenar los datos en la hoja, es decir, los datos deben permanecer tal y como están, pero en el combo si quieres que te los muestre de forma ordenada.

Private Sub UserForm_Activate()
    Set h = Sheets("DIRECTORIO")
    ComboBox12.Text = ""
    For i = 2 To h.Range("A" & Rows.Count).End(xlUp).Row
        Call agregar(UserForm2.ComboBox12, h.Cells(i, "A"))
    Next
End Sub
'
Sub agregar(combo As ComboBox, dato As String)
'por.DAM agrega los item únicos y en orden alfabético
    For i = 0 To combo.ListCount - 1
        Select Case StrComp(combo.List(i), dato, vbTextCompare)
            Case 0: Exit Sub 'ya existe en el combo y ya no lo agrega
            Case 1: combo.AddItem dato, i: Exit Sub 'Es menor, lo agrega antes del comparado
        End Select
    Next
    combo.AddItem dato 'Es mayor lo agrega al final
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas