Llenar un cuadro de lista por vba

Les agradezco me ayuden con un tema que tengo y no he podido solucionar, necesito llenar un cuadro de lista a medida que oprima un botón, es decir tengo 3 botones A, B Y C, si oprimo el botón quiero que me llene la primera intentar de mi cuadro de lista, si oprimo el b que llene la segunda intentar y así sucesivamente.

Solo lo he podido realizar con la primera intentar y al oprimir el segundo botón lleva los datos pero lo coloca debajo de la primera posición.

Uso este código para añadir los datos

LstHORARIO. AddItem "DIBUJO TÉCNICO"
LstHORARIO. AddItem "CÁLCULO"
LstHORARIO. AddItem "CÁLCULO"
LstHORARIO. AddItem "SOCIALES"
LstHORARIO. AddItem "SOCIALES"
LstHORARIO. AddItem "PROGRAMACIÓN"
LstHORARIO. AddItem "PROGRAMACIÓN"
LstHORARIO. AddItem "PROGRAMACIÓN"

Creo que pude ser por la posición, pero no encuentro la manera de darle la posición.

2 Respuestas

Respuesta
1
Respuesta
1

Si en entorno es Access, parece que el cuadro de lista depende de una lista de valores.

En estos casos la función AddItem, añade un item completo (valores para todas las columnas) y las columnas vacías (aquellas para las que no se le proporcione un dato) las 'rellenara' con una cadena de longitud cero.

Recomendaría utilizar una tabla para rellenar los datos y presentarlos en el cuadro de lista (o utilizar directamente un subformulario continuo).

Modificar un Item (parece que es lo que se pretende) solo se puede hacer reescribiendo la lista de valores.

Teniendo en cuenta que para Access la 'lista de valores' la utiliza para rellenar las líneas (items) si se desea insertar valores seleccionándolos uno a uno, lo adecuado es concatenarlos (añadirlos) al final de la lista y será Access el que forme los subconjuntos en base a tomarlos (en este caso de cinco en cinco) o del numero de columnas que se utilicen (las visibles y la invisibles, todas cuentan)

Un formulario : Formulario2
Un cuadro de lista: XModelo
Tiene tres columnas y como separador el punto y coma (mi configuración regional es la española)
---------------------
Desde la 'ventana de inmediato' (VBA, permite interactuar con los objetos y mucho mas) he limpiado el contenido del cuadro de lista:
Forms.formulario2.xmodelo.rowsource= ""

Tras ello le he insertado valores (en triadas y después por libre)

La primera inserción:
Forms.formulario2.xmodelo.rowsource= "'uno';'dos';'tres'"

Le concateno la segunda (los mismos valores sin las comillas simples):
Forms.formulario2.xmodelo.rowsource= Forms.formulario2.xmodelo.rowsource & ";uno;dos;tres"

Una línea mas con dígitos:
Forms.formulario2.xmodelo.rowsource= Forms.formulario2.xmodelo.rowsource & ";1;2;3"

Otro valor mas (lo presentara en la primera línea/columna disponible)
Forms.formulario2.xmodelo.rowsource= Forms.formulario2.xmodelo.rowsource & ";Aceite"

Añado otro valor que mostrara a continuación del anterior:
Forms.formulario2.xmodelo.rowsource= Forms.formulario2.xmodelo.rowsource & ";Vinagre"

Como muestra final un grupo de cinco elementos (que continuaran al ultimo insertado):
Forms.formulario2.xmodelo.rowsource= Forms.formulario2.xmodelo.rowsource & ";1;2;3;11;22"

El contenido actual del cuadro de lista:

¿

? Forms. Formulario2. Xmodelo. Rowsource
'uno';'dos';'tres';uno;dos;tres;1;2;3;Aceite;Vinagre;1;2;3;11;22

Adenda:
Si el botón esta en el mismo formulario que el cuadro de lista, en lugar de la referencia absoluta, se puede utilizar la relativa:
Forms. Formulario2. Xmodelo. Rowsource >>>>>> Me. Xmodelo. Rowsource
Forms.formulario2.xmodelo.rowsource= Forms.formulario2.xmodelo.rowsource & ";Aceite" >>>

>>> Me.xmodelo.rowsource = Me.xmodelo.rowsource & ";Aceite"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas