es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Rellenando el combo box con columna

He estado golpeando mi cabeza contra la pantalla de la computadora tratando de resolver esto, pero cada solución que he encontrado no ha llevado a ninguna parte.

Estoy tratando de crear un formulario de usuario y quiero poblar un cuadro de lista desplegable con datos de la hoja de Excel a la que está conectado. La hoja se titula “PrinterModels (Printer Models)” en el editor de VBA, el cuadro se titula cmbModel. Cuando poblo el cuadro con RowSource en sus propiedades, se llena, pero cuando se seleccionan ítems desaparecen de la lista cuando se selecciona otro ítem. Lo que necesito es una forma de poblar el cuadro mediante código y, si se comporta igual, necesito una forma de volver a poblar el cuadro la próxima vez que se modifique. He publicado mi último intento a continuación, el cual da error 1004.

Private Sub UserForm_Initialize()
    'cmbModel.List = PrinterModels.Range("A2:A").Value

    ModelLast = PrinterModels.Cells(Rows.Count, 1).End(x1Up).Row

    For i = 1 To ModelLast
    Value = PrinterModels.Cells(i, 1).Value
    cmbModel.AddItem Value
    Next i
End Sub
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema que estás experimentando podría ser causado porque el combobox no está vinculado correctamente a la hoja de Excel. En lugar de utilizar la propiedad “RowSource”, puedes intentar poblar el combobox utilizando código VBA. El código que has publicado se ve mayormente correcto, pero hay un error de ortografía en la línea donde intentas encontrar la última fila:

    ModelLast = PrinterModels.Cells(Rows.Count, 1).End(x1Up).Row
    

    x1Up” debería ser cambiado por “xlUp“. Esta línea de código determina la última fila en la columna A de la hoja “PrinterModels” y asigna ese valor a la variable “ModelLast”.

    Después de eso, el código recorre cada fila desde 1 hasta “ModelLast”, obtiene el valor en la columna A para cada fila y lo agrega al combobox utilizando el método “AddItem”.

    Para volver a poblar el combobox más tarde, simplemente puedes llamar a este código nuevamente.

    Si aún tienes problemas, puede haber algún otro problema causando el error. En ese caso, es posible que quieras intentar depurar el código para ver exactamente dónde está fallando.

Comments are closed.