Saltar al contenido

UDF para llenar un control listbox/combobox en un formulario


Antoni

Recommended Posts

publicado

Hola:

Vamos a ver si me se explicar.

El llenado de listas y cuadros combinados en un formulario es de lo mas tedioso y repetitivo.

Me estrujado los sesos pensando como poder realizar esta tarea sin necesidad de escribir o copiar el código cada vez.

¿ Que diferencia hay de un control de un formulario a otro control de otro formulario ?

Pues:

1) El formulario

2) El control

3) La hoja donde están los datos

4) El rango de inicio de los datos

5) El nº de columnas

Pues con esas variables he creado una función que realiza el trabajo de llenado del control.

El nº de columnas se toma de la propiedad .ColumnCount del control

La función retorna el nº de filas que se han añadido al control

La forma de llamar la función es la siguiente:

Filas=LlenarLista(Formulario,[Nombre del Control],[Nombre de la Hoja],[Rango Inicial])

Ejemplo:

Para llenar un listbox llamado "MiLista" con los datos de la hoja "MiHoja" desde C1:

[B]Filas = LlenarLista(Me, "MiLista", "MiHoja","C1")[/B][/CODE]

Los parámetros[b][Nombre del Control],[Nombre de la Hoja],[Rango Inicial][/b] son opcionales:

Para llenar un listbox llamado "[b]ListBox1[/b]" con los datos de la [b]hoja activa[/b] desde [b]A2[/b], bastaría con:

[CODE][B]Filas = LlenarLista(Me)[/B][/CODE]

En el adjunto encontrareis 3 formularios a modo de ejemplo, pueden ser concurrentes, por lo que podeis ejecutarlos los 3 a la vez. Pulsad el botón "[b]Play[/b]" para llenar las listas.

También encontrareis la macro de evento [b]Change [/b]de la hoja "[b]Listas[/b]".

Esta macro actualiza listas y combos de los formularios que estén mostrados.

Probad a hacer alguna modificación en la hoja y vereis como las listas quedan actualizadas automáticamente.

En la propia función encontrareis mas textos de ayuda

Besitos

Saludos.

Fill List Function.zip

publicado

Hola de nuevo:

Me he quedado impresionado por la gran aceptación de este aporte y por la lluvia de comentarios al respecto.

Por dicho motivo he decidido añadir otra UDF al adjunto.

Esta UDF carga el nombre de las hojas del libro activo en un listbox/combobox.

Dadme un poco de tiempo y prometo contestaros todos vuestros posts de forma individual, pero no agobiar ¿Vale?

Mañana mas, pero no mejor porqué es imposible. (El Gran Wyoming)

Os quiero tanto........que.........no puedo seguir, se me llenan los ojos de lágrimas.

Fill List Function II.zip

  • 7 months later...
  • 1 year later...
publicado

Saludos buen material gracias por el aporte. pero me gustaria que realizara un ejemplo paracido al primero pero que si tengo un mismo codigo me presente en la listbox todo los datos que se encuentren en la hoja de ese mismo codigo.

saludos en espera de que me pueda ayudar

publicado

Hola:

El llenado de listas y cuadros combinados en un formulario es de lo mas tedioso y repetitivo.

Me estrujado los sesos pensando como poder realizar esta tarea sin necesidad de escribir o copiar el código cada vez.

¿ Que diferencia hay de un control de un formulario a otro control de otro formulario ?

Pues:

1) El formulario

2) El control

3) La hoja donde están los datos

4) El rango de inicio de los datos

5) El nº de columnas

Pues con esas variables he creado una función que realiza el trabajo de llenado del control.

Filas=LlenarLista(Formulario,[Nombre del Control],[Nombre de la Hoja],[Rango Inicial])

Hola! La idea es buena y la intencion lo es aun mas... sin embargo creo seria mas apropiado crear un modulo de clase para tal tarea. En vez de que LlenarLista sea una funcion, deberia ser un metodo del control con el cual solo debieramos de preocuparnos por solo proveerle el rango de datos a cargar y listo!

Una disculpa por solo comentar y no poder brindar un ejemplo que ilustre mis comentarios, pero por el momento ando corto de tiempo entre el trabajo y creando una clase para el control y gestion de directorios en VBA/Excel que pronto pondre a disposicion.... si logro hacerme del tiempo quizas pueda ilustrar esto conun ejemplo!

Saludos!

publicado

Muy buen aporte, me parece que nadie de este foro pudiera tener tanta creatividad como lo tienes tu siempre inventando cada cosa que no se como se te ocurre tanto, saludos.

  • 1 year later...
publicado

Excelente Maestro, pero se podría modificar para que cargue solo registros únicos sin que se repitan y de manera ordenada.

Saludos,

publicado

.

A petición de [uSER=161684]@pajuma[/uSER], subo una versión que permite valores único y en orden alfabético.

He añadido un parámetro: Únicos=True[False]. Solo se controla la primera columna.

La ordenación, se hace si o si. (Las 3 primeras columnas como máximo).

.

Copia de Fill List Function III.xls

publicado

Gracias Maestro Esta excelente buen aporte me servirá de mucho.

cuando sea grande quiero ser como usted en conocimiento jejejejeje...:D:)

publicado

Macro Antonio, eres genial ¡¡¡EXCELENTE!!! Como que el tema no esta cerrado, aprovecho para preguntar, si es posible: ¿Una vez llenado la lista o el cuadro combinado, será posible eligir de esta misma Lista o Cuadro (Por ejemplo con doble click) cada vez un registro y llevarlo a otra hoja diferente a la que contiene los datos?

publicado

.

Estamos en foro de aportes y no se aceptan consultas en él.

He atendido a [uSER=161684]@pajuma[/uSER] por entender qué su petición aporta valor añadido al propio aporte.

Tu consulta nada tiene que ver con el objetivo del aporte, que no es otro que llenar listas y cuadros combinados en un formulario.

Abre una consulta en el foro de macros y plantea tu problema.

Saludos

.

publicado

Esta bien bien Macro Antonio, gracias por responderme. Conforme a tu recomendación, he abierto la consulta correspondiente en el foro de macros.

Un abrazo a la distancia, desde el Cusco, Perú.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.