Consulta List Box

Solo consultas sobre macros y código VBA Excel.

Reglas del Foro
1. Antes de hacer tu pregunta intenta con el buscador de este foro (muchas preguntas ya fueron respondidas antes!)
2. Si haces una nueva pregunta, es muy recomendable que adjuntes el ejemplo Excel para poder comprenderla mejor!
3. Realiza tu pregunta de forma clara, explicando bien cada paso de lo que haces y tendrás más probabilidad de respuesta!
Compartir en:
     

Consulta List Box

Notapor Jose BN » 05 Ene 2012 10:08

Hola! amigos de este foro quisiera ver si me pueden ayudar con el siguiente problema que tengo con un listbox(llamado L) en un form, el codigo que adjunto lo encontre en la web y he intentado ampliar el rango de columna a mostrar en el listbox pero no he tenido exito, el rango de columna que necesito son 16:

Dim Texto, fTexto, y
Private Sub BtnBuscar_Click()
Application.ScreenUpdating = False
L.Clear
Texto = "*" & xTexto & "*"
Range("B10").Activate
Do Until ActiveCell = ""
fTexto = ""
For y = 2 To 10: fTexto = fTexto & ActiveCell.Offset(0, y - 1): Next
If UCase(fTexto) Like UCase(Texto) Then
L.AddItem
For y = 2 To 10: L.List(L.ListCount - 1, y - 2) = ActiveCell.Offset(0, y - 1): Next
L.List(L.ListCount - 1, 9) = ActiveCell.Row
End If
ActiveCell.Offset(1, 0).Activate
Loop
End Sub

El form cuenta con un boton(BtnBuscar) y un textbox(xTexto) con lo cual estoy intentando con este codigo que extraiga las concidencias del valor digitado en el texbox de toda la lista.

Agradezco si alguno sabe como solucionar esto, pueda compartirlo.

Gracias!

Jose
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Jose BN
Miembro Frecuente
Miembro Frecuente
 
Registrado: 18 Abr 2011 23:16

Re: Consulta List Box

Notapor Antoni » 05 Ene 2012 12:26

Hola:

El código es mío, pero lamentablemente, la técnica que se utiliza en él solo vale para 10 columnas en controles LisBbox y ComboBox.

Sube el archivo, e intentaré adaptarlo utilizando las propiedades ListRows o RowSource que si permiten definir mas de 10 columnas.

Saludos
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Antoni
Miembro Frecuente
Miembro Frecuente
 
Registrado: 22 Dic 2009 04:58
Ubicación: GALICIA (ESPAÑA)

Re: Consulta List Box

Notapor Jose BN » 05 Ene 2012 17:09

Hola:

Antoni gracias por responder, adjunto el link con el archivo que intente hacer la pruba con el codigo que colgaste y espero me puedas ayudar a ampliar el rango de columnas:

https://skydrive.live.com/redir.aspx?ci ... feaFp1ee6U


Por otra parte, te comento que interes del codigo, radica en poder aplicarlo a una pequeña guia telefonica que estoy confeccionando, pero he tenido problema con el listbox, cuando intento agregarle botones que permitan ingresar, modifica o eliminar registro, no logro que se apliquen las modificaciones.

Muchas gracias! por la ayuda.

Saludes

Jose
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Jose BN
Miembro Frecuente
Miembro Frecuente
 
Registrado: 18 Abr 2011 23:16

Re: Consulta List Box

Notapor Antoni » 06 Ene 2012 08:28

Hola

No consigo bajar el archivo.

Súbelo directamente al foro (comprimelo si pesa mucho, o reduce datos) o súbelo a megaupload.

Saludos.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Antoni
Miembro Frecuente
Miembro Frecuente
 
Registrado: 22 Dic 2009 04:58
Ubicación: GALICIA (ESPAÑA)

Re: Consulta List Box

Notapor Jose BN » 06 Ene 2012 16:33

Hola:

Antoni lo colgue en el foro.

Espero puedas abrirlo.

Saludes,

Jose
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Jose BN
Miembro Frecuente
Miembro Frecuente
 
Registrado: 18 Abr 2011 23:16

Re: Consulta List Box

Notapor Antoni » 08 Ene 2012 15:44

Hola.

En el adjunto encontrarás el formulario de consulta y actualización resuelto.

Existen dos formas de trabajar con él:

En modo Consulta y en modo Edición elegibles desde un combobox añadido a tal efecto.

También observarás dos nuevos listbox, uno te permite escoger la forma de búsqueda y el otro te permite escoger por que columna se va a buscar.

He añadido un nuevo botón "Limpiar" que borra el contenido de los textbox.

El botón de "Buscar por código" ya no tiene sentido porqué se puede buscar por cualquier columna, por lo que lo he utilizado para restaurar la lista a su totalidad después de hacer una consulta.

Verás que dicho botón junto con el de "Buscar" los he cambiado de ubicación.

Hasta aquí la parte funcional, ahora vamos por la parte técnica.

Le he cambiado el nombre a los textos y etiquetas de la siguiente manera:

Etiquetas: xLabeln .En las etiquetas se cargan los títulos de la fila 1 de la base de datos
Textos: xTextBoxn

Siendo n= Nº de columna de la base de datos.

¿ Que se persigue con este cambio ? Saber a que elemento de la colección Controls debe asociarse una columna en concreto de la base de datos.

Gracias a esto tratamos los controles como arrays y conseguimos un notable ahorro de escritura de código, además de facilitar su seguimiento.

Con todo esto no hemos hablado ni un solo momento del motivo de la consulta.

Tal como comenté, un listbox solo admite 10 columnas salvo que se utilice, entre otros, la propiedad .RowSource.

Esta propiedad permite asociar un rango a un listbox con independencia del número de columnas, pero, siempre hay un pero, las celdas de dicho rango no pueden ser modificadas mientras exista la asociación entre el rango y el listbox.

Por dicho motivo, antes de modificar, eliminar, incluir cualquier dato es necesario deshacer esa asignación y reasignarla de nuevo después de haber realizado la variación de datos.

Dado que dicho rango ha de ser forzosamente consecutivo, es decir no puede contener ni filas ni columnas entre medio, se ha hecho necesario utilizar una hoja de trabajo para poder realizar el proceso de consulta. La hoja se borra al terminar el formulario.

Dicha hoja es la "Hoja2", esta hoja debe existir siempre y no puede ser usada para nada mas.

El formulario tal como está es válido para cualquier hoja que tenga un máximo de 16 columnas.

La fila 1 es la fila de títulos, y los datos deben empezar en la fila 2. La columna 1 se reserva para un numerador que se asigna de forma automática al añadir un nuevo registro.

Ya contarás como te ha ido.

Saludos
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Antoni
Miembro Frecuente
Miembro Frecuente
 
Registrado: 22 Dic 2009 04:58
Ubicación: GALICIA (ESPAÑA)

Re: Consulta List Box

Notapor Roberto2010 » 08 Ene 2012 17:24

Hola Antoni,
impresionante tu ayuda,
especialmente lo de renombrar las etiquetas para usarlas como arrays. Eso nunca lo había visto.
Gracias por tu generosidad y tiempo.
No se puede desperdiciar ni un solo fragmento de tu código.
Muchas gracias!
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Roberto2010
Miembro Frecuente
Miembro Frecuente
 
Registrado: 26 Jul 2010 15:58

Re: Consulta List Box

Notapor Jose BN » 09 Ene 2012 16:43

Sencillamente impresionante!!! Antoni realmente te agradezco mucho el enorme y generoso aporte que me haz brindado, quede muy asombrado de ver cosas que no habia visto antes.

Muchas gracias!

Saludes

Jose
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Jose BN
Miembro Frecuente
Miembro Frecuente
 
Registrado: 18 Abr 2011 23:16


Compartir en:
     

  • Anuncio
Manual Excel avanzado

Volver a Macros

¿Quién está conectado?

Usuarios navegando por este Foro: victor_mrc7 y 6 invitados