Necesito ayuda con un código que cargue combobox alfabéticamente en excel

Buenas expertos. Necesito ayuda para que un combobox se cargue alfabéticamente. Tengo el siguiente código que me carga los datos.

Private Sub UserForm_Initialize()
ComboBox1.Clear
Sheets("Materiales").Select
Range("d1").Select
Do While ActiveCell <> ""
ComboBox1.AddItem ActiveCell
ActiveCell.Offset(0, 5).Select
Loop
End Sub

Dicho codigo funciona bien solo que me gustaria que muestre los nombre alfabeticamente para hacer mas facil la busqueda ya que son muchos nombres. No puedo modificar nada de la hoja materiales que es donde saco los nombres que llenan el combo1. Espero me puedan ayudar muchas gracias

1 Respuesta

Respuesta
1

Cambia tu código por esto:

Private Sub UserForm_Initialize()
    ComboBox1.Clear
    Sheets("Materiales").Select
    Range("d1").Select
    Do While ActiveCell <> ""
        agregar ComboBox1, ActiveCell.Value
        ActiveCell.Offset(0, 5).Select
    Loop
End Sub
'
Sub agregar(combo As ComboBox, dato As String)
'por.Dante Amor 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

Saludos.Dante Amor

Recuerda valorar la respuesta.

Si en tus datos, existen datos repetidos, entonces utiliza esta macro:

Private Sub UserForm_Initialize()
    ComboBox1.Clear
    Sheets("Materiales").Select
    Range("d1").Select
    Do While ActiveCell <> ""
        agregar ComboBox1, ActiveCell.Value
        ActiveCell.Offset(0, 5).Select
    Loop
End Sub
'
Sub agregar(combo As ComboBox, dato As String)
'por.Dante Amor agrega los item en orden alfabético
    For i = 0 To combo.ListCount - 1
        If StrComp(combo.List(i), dato, vbTextCompare) > -1 Then
            combo.AddItem dato, i: Exit Sub 'Es menor, lo agrega antes del comparado
        End If
    Next
    combo.AddItem dato 'Es mayor lo agrega al final
End Sub

Saludos.Dante Amor

Recuerda valorar la respuesta.

Wow dante gracias por tu acertada y pronta respuesta. El código funciona perfecto. Lo cual me trajo otro problema el cual consultare en otra pregunta. Recuerdo que hace unos años pregunte la misma pregunta y la respuesta fue que no se podía. ¡Gracias por compartir tu conocimiento con la gente del foro!

Qué bueno que te sirvió, incluso si fueran muchos datos, existen otros método para ordenar los datos, por ejemplo, se podría copiar la información a otra columna, ordenar la columna y entonces cargar los datos ya con la columna ordenada.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas