Listbox autodimensionado

Aporta tus plantillas y aplicaciones Excel de interés para la comunidad.
Reglas del Foro
Este foro no es para hacer preguntas!
Este foro solo es para que aportes algo de interés para la comunidad.
(para preguntas vuelve al índice y busca los foros de "Tus Preguntas a la Comunidad")
Responder
Avatar de Usuario
Cacho R
Miembro Frecuente
Miembro Frecuente
Mensajes: 10804
Registrado: 23 Jun 2011 17:15
Ubicación: Buenos Aires
Contactar:

Listbox autodimensionado

Mensaje por Cacho R » 06 Mar 2014 12:52

Cuando cargamos datos a un listbox o a un combobox de muchas columnas, solemos aplicar un cierto tiempo -no menor- a dimensionar los anchos de las columnas respectivas.

El presente aporte realiza automáticamente esa tarea.

La única información que es requerido pasarle -como parámetro- al procedimiento es el rango de celdas de la tabla de datos, incluyendo la fila superior de títulos. A partir de esa información:

- El evento Initialize del userform llama al procedimiento y le pasa el rango de datos;

- El procedimiento establece la cantidad de columnas que tendrá el listbox, así como sus respectivos anchos;

- Para que la equivalencia sea más ajustada, el tipo y el tamaño de la letra del listbox se asemeja al tipo y al tamaño de la primera celda de datos de la tabla.

- Adicionalmente, se aprovechan dos DTPicker presentes en el userform para realizar un clásico filtro "desde-hasta" a partir de un campo fecha. Aquí lo interesante es que el resultado del filtro es copiado a otro rango, y ese rango auxiliar es pasado -como parámetro- al procedimiento.

- El código contiene una buena cantidad de comentarios como para orientar al lector sobre lo que se está haciendo a cada paso.

¡Espero que sea de utilidad!
Saludos, Cacho R.
No tienes los permisos requeridos para ver los archivos adjuntos a este mensaje.



Avatar de Usuario
HBanchieri
Miembro Frecuente
Miembro Frecuente
Mensajes: 1560
Registrado: 20 Mar 2011 00:33
Ubicación: Sta. Cruz - Bolivia

Re: Listbox autodimensionado

Mensaje por HBanchieri » 18 Mar 2014 10:34

No te imagina como me gusta ver un "codigo" así, limpio, sin nada sobrando, directo al punto.

He acrecentado esta linea,

Código: Seleccionar todo

'El ancho del listbox es 20 unidades mayor que la suma de los anchos de sus columnas
  ListBox1.Width = 20 + WorksheetFunction.Sum(mColWidth)
  DoEvents
'»     »     »     »     »     »    ESTA    »     »     »     »     »     »
 'El ancho del UserForm es 35 unidades mayor que la suma de los anchos de sus columnas
 UserForm1.Width = 35 + WorksheetFunction.Sum(mColWidth)
'«     «     «     «     «     «     «     «     «     «     «     «     «     «     «   
Si me permite te hago una preguntas, quizá sean muy básicas pero realmente no se la respuesta... :D

Private Sub CargaDatos(Rng As Range[)

El hecho de que la variable se declara entre paréntesis es que permite indicar el rango, de esta forma?

CargaDatos Hoja1.[a1].CurrentRegion

O de esta?

CargaDatos .[ad1].CurrentRegion

La verdad nunca entendí bien el uso del paréntesis en el nombre de la macro, sera que podría hacer algunas consideraciones sobre el tema?

Gracias.



Avatar de Usuario
Cacho R
Miembro Frecuente
Miembro Frecuente
Mensajes: 10804
Registrado: 23 Jun 2011 17:15
Ubicación: Buenos Aires
Contactar:

Re: Listbox autodimensionado

Mensaje por Cacho R » 28 Mar 2014 15:37

En esta nueva versión incorporo una idea de Antoni, y el aporte se convierte en un Listbox auto-dimensionado con búsqueda automática en cualquier campo.

Saludos, Cacho R.
No tienes los permisos requeridos para ver los archivos adjuntos a este mensaje.



Avatar de Usuario
HBanchieri
Miembro Frecuente
Miembro Frecuente
Mensajes: 1560
Registrado: 20 Mar 2011 00:33
Ubicación: Sta. Cruz - Bolivia

Re: Listbox autodimensionado

Mensaje por HBanchieri » 31 Mar 2014 23:26

Mestre, si el Listbox esta configurado para ser auto-dimensionado el Userform no esta.

Tampoco están habilitadas las barras de desplazamiento horizontal y vertical del Listbox.

Me parece que habría que cambiar una o otra cosa, o bien las dos.

Saludos...



Avatar de Usuario
Cacho R
Miembro Frecuente
Miembro Frecuente
Mensajes: 10804
Registrado: 23 Jun 2011 17:15
Ubicación: Buenos Aires
Contactar:

Re: Listbox autodimensionado

Mensaje por Cacho R » 07 Abr 2014 13:35

HBanchieri escribió:... si el Listbox esta configurado para ser auto-dimensionado el Userform no esta. Tampoco están habilitadas las barras de desplazamiento horizontal y vertical del Listbox...
No entendí tu dificultad por lo que te sugiero: ¿Qué tal si abres una nueva consulta y planteas -con un ejemplo Excel- la cuestión?



Avatar de Usuario
itanium
Miembro Frecuente
Miembro Frecuente
Mensajes: 23
Registrado: 12 Abr 2014 22:17

Re: Listbox autodimensionado

Mensaje por itanium » 21 Jul 2014 19:44

En primer lugar quiero agradecer a Cacho y Adrian por su aporte, muy util y educativo. Como se dijo aqui: directo y muy bien comentado.
Me estoy iniciando en este tipo de trabajos, por lo que poco a poco he ido aprendiendo de foros como este. Revisando los dos aportes hechos, me gustaria saber mejorar el codigo de ustedes para que al seleccionar una linea del listbox una vez encontrado el registro, es decir aplicado el filtro, podamos exportar esos registros a utra parte, bien sea una celda u otro formulario. Si ya filtre los datos, ahora como los "copipego"?

Saludos, muy agradecido :wink:



Roberto2010
Miembro Frecuente
Miembro Frecuente
Mensajes: 263
Registrado: 26 Jul 2010 15:58

Re: Listbox autodimensionado

Mensaje por Roberto2010 » 23 Jul 2014 15:18

Gracias Cacho por el aporte, lo que mas aprecio es lo rápido que carga el listbox aún aumentando muchas mas filas.



Responder