Explicación del siguiente código para cargar datos únicos en el combobox

Me funciona muy bien la carga en el combo, pero como comenté anteriormente me gusta aprender, me podría explicar el funcionamiento de las siguientes instrucciones.

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, 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

2 Respuestas

Respuesta
2

No te preocupes, cualquier duda me puedes consultar.

Te explico el funcionamiento, el procedimiento “agregar” va de la mano con el evento “Userform_activate.

Cuando se abre el formulario, lo primero que hace es leer los datos de la columna A desde la fila 2 hasta la última fil. Cada es enviado al procedimiento “agregar”.

Private Sub UserForm_Activate()

'por.Dante Amor

    For i = 2 To Range("A" & Rows.Count).End(xlUp).Row

        agregar ComboBox1, Cells(i, "A")

    Next

End Sub


Ahora, lo que hace el procedimiento agregar: toma el nombre del combo que va a utilizar y el dato que se va a agregar en el combo.

Primero, lee cada uno de los datos almacenados en el combo y lo compara con el nuevo dato que se va a agregar, el resultado de la comparación arroja un 0 si son iguales o un 1 si el nuevo dato es menor que alguno de los datos ya almacenados.

Entonces, si el resultado es 0, el dato ya existe y no es agregado.

Si el resultado es 1, entonces es menor y lo agrega antes del dato comparado

Si es otro el resultado, entonces lo agrega al final del combo

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, 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


Espero que haya quedada clara la explicación, cualquier duda avísame.

Saludos. Dante Amor

Respuesta

http://www.programarexcel.com/2014/11/combobox-sin-duplicados.html

Hola este ejemplo puede aportar a que aprendas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas